From df08ed7d1c8f55fb0760902dffb3413b8466339a Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Mon, 1 May 2023 19:51:42 +0200 Subject: [PATCH] radv: Move all the dirty flags from TES binding to TCS binding. With merged shaders we might not have an explicit TES. Fixes: 879ddf97202 ("radv: rework binding shaders to cmdbuf by introducing new helpers") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8939 Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index eb18b2214d1..2ebc3c562e4 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -6500,6 +6500,8 @@ static void radv_bind_vertex_shader(struct radv_cmd_buffer *cmd_buffer, const struct radv_shader *vs) { radv_bind_pre_rast_shader(cmd_buffer, vs); + + /* Can't put anything else here due to merged shaders */ } static void @@ -6509,10 +6511,11 @@ radv_bind_tess_ctrl_shader(struct radv_cmd_buffer *cmd_buffer, const struct radv cmd_buffer->tess_rings_needed = true; - /* Always re-emit patch control points when a new pipeline with tessellation is bound because a - * bunch of parameters (user SGPRs, TCS vertices out, ccw, etc) can be different. + /* Always re-emit patch control points/domain origin when a new pipeline with tessellation is + * bound because a bunch of parameters (user SGPRs, TCS vertices out, ccw, etc) can be different. */ - cmd_buffer->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_PATCH_CONTROL_POINTS; + cmd_buffer->state.dirty |= + RADV_CMD_DIRTY_DYNAMIC_PATCH_CONTROL_POINTS | RADV_CMD_DIRTY_DYNAMIC_TESS_DOMAIN_ORIGIN; } static void @@ -6520,13 +6523,7 @@ radv_bind_tess_eval_shader(struct radv_cmd_buffer *cmd_buffer, const struct radv { radv_bind_pre_rast_shader(cmd_buffer, tes); - cmd_buffer->tess_rings_needed = true; - - /* Always re-emit patch control points/domain origin when a new pipeline with tessellation is - * bound because a bunch of parameters (user SGPRs, TCS vertices out, ccw, etc) can be different. - */ - cmd_buffer->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_PATCH_CONTROL_POINTS | - RADV_CMD_DIRTY_DYNAMIC_TESS_DOMAIN_ORIGIN; + /* Can't put anything else here due to merged shaders */ } static void