summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>2023-05-01 19:51:42 +0200
committerEric Engestrom <eric@engestrom.ch>2023-05-03 14:41:58 +0100
commit84889a982cfcbabb1d37b607fcc83b28cc78f0fd (patch)
tree89fb5480a0b77081cb03d96f0f73c687ffda56a8
parent61b937290ecd3bf263183a5d93dff6c129c6f8b6 (diff)
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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22784> (cherry picked from commit df08ed7d1c8f55fb0760902dffb3413b8466339a)
-rw-r--r--.pick_status.json2
-rw-r--r--src/amd/vulkan/radv_cmd_buffer.c17
2 files changed, 8 insertions, 11 deletions
diff --git a/.pick_status.json b/.pick_status.json
index 3f03470229c..7a8f708070a 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 49f904c5cb6..97e2f89973a 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