radv: Move all the dirty flags from TES binding to TCS binding.

With merged shaders we might not have an explicit TES.

Fixes: 879ddf9720 ("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 df08ed7d1c)
This commit is contained in:
Bas Nieuwenhuizen 2023-05-01 19:51:42 +02:00 committed by Eric Engestrom
parent 61b937290e
commit 84889a982c
2 changed files with 8 additions and 11 deletions

View File

@ -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"
},

View File

@ -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