mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-09 04:00:12 +01:00
radv: always re-emit patch control points when a pipeline with tess is bound
We already re-emit this state when it's static. It could be dirtied
conditionally but the number of parameters to check is not worth it.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7457
Fixes: eef1511437 ("radv: implement dynamic patch control points")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19021>
This commit is contained in:
parent
3c9771b434
commit
65dd53ca97
1 changed files with 11 additions and 9 deletions
|
|
@ -5209,16 +5209,18 @@ radv_CmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipeline
|
|||
cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_VGT_FLUSH;
|
||||
}
|
||||
|
||||
if (radv_pipeline_has_stage(graphics_pipeline, MESA_SHADER_TESS_CTRL) &&
|
||||
!(graphics_pipeline->dynamic_states & RADV_DYNAMIC_PATCH_CONTROL_POINTS)) {
|
||||
/* Bind the tessellation state from the pipeline when it's not dynamic and make sure to
|
||||
* emit it if the number of patches or the LDS size changed.
|
||||
if (radv_pipeline_has_stage(graphics_pipeline, MESA_SHADER_TESS_CTRL)) {
|
||||
if (!(graphics_pipeline->dynamic_states & RADV_DYNAMIC_PATCH_CONTROL_POINTS)) {
|
||||
/* Bind the tessellation state from the pipeline when it's not dynamic. */
|
||||
struct radv_shader *tcs = graphics_pipeline->base.shaders[MESA_SHADER_TESS_CTRL];
|
||||
|
||||
cmd_buffer->state.tess_num_patches = tcs->info.num_tess_patches;
|
||||
cmd_buffer->state.tess_lds_size = tcs->info.tcs.num_lds_blocks;
|
||||
}
|
||||
|
||||
/* Always re-emit patch control points when a new pipeline with tessellation is bound
|
||||
* because a bunch of parameters (user SGPRs, TCS vertices out, etc) can be different.
|
||||
*/
|
||||
struct radv_shader *tcs = graphics_pipeline->base.shaders[MESA_SHADER_TESS_CTRL];
|
||||
|
||||
cmd_buffer->state.tess_num_patches = tcs->info.num_tess_patches;
|
||||
cmd_buffer->state.tess_lds_size = tcs->info.tcs.num_lds_blocks;
|
||||
|
||||
cmd_buffer->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_PATCH_CONTROL_POINTS;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue