In RADV we need to offset the writemask because nir_lower_clip_cull_distance_arrays() combines the arrays. However we can't use this with radeonsi currently so don't offset the writemask.
Fixes the following piglit tests: arb_cull_distance/clip-cull-3.shader_test arb_cull_distance/clip-cull-4.shader_test --- src/gallium/drivers/radeonsi/si_shader_nir.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index e186661caf..7a88227381 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -295,22 +295,21 @@ void si_nir_scan_shader(const struct nir_shader *nir, info->samplers_declared |= u_bit_consecutive(variable->data.binding, aoa_size); else if (base_type == GLSL_TYPE_IMAGE) info->images_declared |= u_bit_consecutive(variable->data.binding, aoa_size); } info->num_written_clipdistance = nir->info.clip_distance_array_size; info->num_written_culldistance = nir->info.cull_distance_array_size; info->clipdist_writemask = u_bit_consecutive(0, info->num_written_clipdistance); - info->culldist_writemask = u_bit_consecutive(info->num_written_clipdistance, - info->num_written_culldistance); + info->culldist_writemask = u_bit_consecutive(0, info->num_written_culldistance); if (info->processor == PIPE_SHADER_FRAGMENT) info->uses_kill = nir->info.fs.uses_discard; /* TODO make this more accurate */ info->const_buffers_declared = u_bit_consecutive(0, SI_NUM_CONST_BUFFERS); info->shader_buffers_declared = u_bit_consecutive(0, SI_NUM_SHADER_BUFFERS); func = (struct nir_function *)exec_list_get_head_const(&nir->functions); nir_foreach_block(block, func->impl) { -- 2.14.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev