diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 1634c2db549..b02a3fd9a65 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -4319,6 +4319,7 @@ radv_cmp_tcs_epilog(const void *a_, const void *b_) static struct radv_shader_part * lookup_tcs_epilog(struct radv_cmd_buffer *cmd_buffer) { + const struct radv_shader *tcs = cmd_buffer->state.shaders[MESA_SHADER_TESS_CTRL]; const struct radv_shader *tes = cmd_buffer->state.shaders[MESA_SHADER_TESS_EVAL]; struct radv_device *device = cmd_buffer->device; struct radv_shader_part *epilog = NULL; @@ -4326,6 +4327,7 @@ lookup_tcs_epilog(struct radv_cmd_buffer *cmd_buffer) struct radv_tcs_epilog_key key = { .primitive_mode = tes->info.tes._primitive_mode, .tes_reads_tessfactors = tes->info.tes.reads_tess_factors, + .tcs_out_patch_fits_subgroup = tcs->info.wave_size % tcs->info.tcs.tcs_vertices_out == 0, }; uint32_t hash = radv_hash_tcs_epilog(&key); diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 20729a4e676..9156f28f34d 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -487,6 +487,7 @@ struct radv_vs_prolog_key { struct radv_tcs_epilog_key { enum tess_primitive_mode primitive_mode; bool tes_reads_tessfactors; + bool tcs_out_patch_fits_subgroup; }; enum radv_shader_binary_type { RADV_BINARY_TYPE_LEGACY, RADV_BINARY_TYPE_RTLD };