From 64aa84eaf7afd7cb5564e11915dd189089cbdf6d Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 19 Jan 2024 14:18:47 +0100 Subject: [PATCH] radv: rebind mesh/task shaders when restoring meta context Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/meta/radv_meta.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/meta/radv_meta.c b/src/amd/vulkan/meta/radv_meta.c index 208940540fd..546886e8da8 100644 --- a/src/amd/vulkan/meta/radv_meta.c +++ b/src/amd/vulkan/meta/radv_meta.c @@ -141,8 +141,12 @@ radv_meta_save(struct radv_meta_saved_state *state, struct radv_cmd_buffer *cmd_ state->old_graphics_pipeline = cmd_buffer->state.graphics_pipeline; - for (unsigned i = 0; i < MESA_SHADER_COMPUTE; i++) + for (unsigned i = 0; i <= MESA_SHADER_MESH; i++) { + if (i == MESA_SHADER_COMPUTE) + continue; + state->old_shader_objs[i] = cmd_buffer->state.shader_objs[i]; + } /* Save all dynamic states. */ state->dynamic = cmd_buffer->state.dynamic; @@ -192,7 +196,10 @@ radv_meta_restore(const struct radv_meta_saved_state *state, struct radv_cmd_buf } else { cmd_buffer->state.graphics_pipeline = NULL; - for (unsigned i = 0; i < MESA_SHADER_COMPUTE; i++) { + for (unsigned i = 0; i <= MESA_SHADER_MESH; i++) { + if (i == MESA_SHADER_COMPUTE) + continue; + if (!state->old_shader_objs[i]) continue;