From 84889a982cfcbabb1d37b607fcc83b28cc78f0fd 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: (cherry picked from commit df08ed7d1c8f55fb0760902dffb3413b8466339a) --- .pick_status.json | 2 +- src/amd/vulkan/radv_cmd_buffer.c | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 3f03470229cfd..7a8f708070add 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -22,7 +22,7 @@ "description": "radv: Move all the dirty flags from TES binding to TCS binding.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "879ddf97202fb4721be28f0efffeb064ea61c57b" }, diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 49f904c5cb632..97e2f89973a09 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -6499,6 +6499,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 @@ -6508,10 +6510,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 @@ -6519,13 +6522,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