diff --git a/src/amd/common/ac_nir.h b/src/amd/common/ac_nir.h index e0364620548..12021b66628 100644 --- a/src/amd/common/ac_nir.h +++ b/src/amd/common/ac_nir.h @@ -89,6 +89,7 @@ ac_nir_lower_hs_outputs_to_mem(nir_shader *shader, uint64_t tes_patch_inputs_read, unsigned num_reserved_tcs_outputs, unsigned num_reserved_tcs_patch_outputs, + unsigned wave_size, bool pass_tessfactors_by_reg, bool emit_tess_factor_write); diff --git a/src/amd/common/ac_nir_lower_tess_io_to_mem.c b/src/amd/common/ac_nir_lower_tess_io_to_mem.c index 0da9cdefb9c..d2ce7c11479 100644 --- a/src/amd/common/ac_nir_lower_tess_io_to_mem.c +++ b/src/amd/common/ac_nir_lower_tess_io_to_mem.c @@ -705,6 +705,7 @@ ac_nir_lower_hs_outputs_to_mem(nir_shader *shader, uint64_t tes_patch_inputs_read, unsigned num_reserved_tcs_outputs, unsigned num_reserved_tcs_patch_outputs, + unsigned wave_size, bool pass_tessfactors_by_reg, bool emit_tess_factor_write) { @@ -717,7 +718,7 @@ ac_nir_lower_hs_outputs_to_mem(nir_shader *shader, .tes_patch_inputs_read = tes_patch_inputs_read, .tcs_num_reserved_outputs = num_reserved_tcs_outputs, .tcs_num_reserved_patch_outputs = num_reserved_tcs_patch_outputs, - .tcs_out_patch_fits_subgroup = 32 % shader->info.tess.tcs_vertices_out == 0, + .tcs_out_patch_fits_subgroup = wave_size % shader->info.tess.tcs_vertices_out == 0, .tcs_pass_tessfactors_by_reg = pass_tessfactors_by_reg, .map_io = map, }; diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 7f07b982bac..c2650bde38a 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -1124,7 +1124,7 @@ radv_lower_io_to_mem(struct radv_device *device, struct radv_pipeline_stage *sta device->physical_device->rad_info.gfx_level, info->tcs.tes_reads_tess_factors, info->tcs.tes_inputs_read, info->tcs.tes_patch_inputs_read, info->tcs.num_linked_outputs, - info->tcs.num_linked_patch_outputs, false, true); + info->tcs.num_linked_patch_outputs, info->wave_size, false, true); return true; } else if (nir->info.stage == MESA_SHADER_TESS_EVAL) {