From 3d5d163693956fc064dc58621e252592f1cb9da7 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 23 Jan 2024 17:55:49 +0100 Subject: [PATCH] radv: always mark drawid/base_instance used with ESO The user SGPR is always declared for merged shaders compiled separately because the args must match. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index feaedb85aa1..b9c91ded620 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -6399,6 +6399,14 @@ radv_bind_pre_rast_shader(struct radv_cmd_buffer *cmd_buffer, const struct radv_ cmd_buffer->state.uses_drawid = shader->info.vs.needs_draw_id; cmd_buffer->state.uses_baseinstance = shader->info.vs.needs_base_instance; + if (shader->info.merged_shader_compiled_separately) { + /* Merged shaders compiled separately (eg. VS+TCS) always declare these user SGPRS + * because the input arguments must match. + */ + cmd_buffer->state.uses_drawid = true; + cmd_buffer->state.uses_baseinstance = true; + } + /* Re-emit some vertex states because the SGPR idx can be different. */ cmd_buffer->state.last_first_instance = -1; cmd_buffer->state.last_vertex_offset_valid = false;