radv: Use radv_get_shader to get vertex shader when binding pipeline.
authorTimur Kristóf <timur.kristof@gmail.com>
Fri, 31 Mar 2023 03:05:36 +0000 (05:05 +0200)
committerMarge Bot <emma+marge@anholt.net>
Fri, 31 Mar 2023 16:42:39 +0000 (16:42 +0000)
The shaders[MESA_SHADER_VERTEX] can be NULL for merged shaders.

Fixes: b2ac40e734194fcb571a72396b5644b1d351e48a
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8749
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22229>

src/amd/vulkan/radv_cmd_buffer.c

index 742f1da..0dc581d 100644 (file)
@@ -6624,8 +6624,9 @@ radv_CmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipeline
       }
 
       /* Re-emit the vertex buffer descriptors because they are really tied to the pipeline. */
-      if (graphics_pipeline->base.shaders[MESA_SHADER_VERTEX] &&
-          graphics_pipeline->base.shaders[MESA_SHADER_VERTEX]->info.vs.vb_desc_usage_mask) {
+      const struct radv_shader *vs =
+         radv_get_shader(graphics_pipeline->base.shaders, MESA_SHADER_VERTEX);
+      if (vs && vs->info.vs.vb_desc_usage_mask) {
          cmd_buffer->state.dirty |= RADV_CMD_DIRTY_VERTEX_BUFFER;
       }