From 971e068762abcd593cb1a539137e09ee5cd65f6c Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Fri, 19 Sep 2025 21:09:20 +0200 Subject: [PATCH] panvk: Fix ordering in prepare_draw() panvk_draw_prepare_attributes() depends on VS descriptors sets being up-to-date which implies calling cmd_prepare_shader_desc_tables() before. panvk_draw_prepare_vs_copy_desc_job() depends on img_attrib_table, which can be set in panvk_draw_prepare_vs_attributes(). Signed-off-by: Boris Brezillon Reviewed-by: Mary Guillemard Part-of: --- src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c index 3a5676d62a9..e072d243a95 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c @@ -1362,8 +1362,6 @@ prepare_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_data *draw) if (result != VK_SUCCESS) return result; - panvk_draw_prepare_attributes(cmdbuf, draw); - uint32_t used_set_mask = vs->desc_info.used_set_mask | (fs ? fs->desc_info.used_set_mask : 0); @@ -1380,8 +1378,6 @@ prepare_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_data *draw) cmdbuf, desc_state, vs, vs_desc_state); if (result != VK_SUCCESS) return result; - - panvk_draw_prepare_vs_copy_desc_job(cmdbuf, draw); } /* No need to setup the FS desc tables if the FS is not executed. */ @@ -1397,6 +1393,11 @@ prepare_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_data *draw) return result; } + panvk_draw_prepare_attributes(cmdbuf, draw); + + if (gfx_state_dirty(cmdbuf, DESC_STATE) || gfx_state_dirty(cmdbuf, VS)) + panvk_draw_prepare_vs_copy_desc_job(cmdbuf, draw); + draw->tls = batch->tls.gpu; draw->fb = batch->fb.desc.gpu;