From 6c44390e80a72bf599194ee2784ba0955f3cae85 Mon Sep 17 00:00:00 2001 From: Mel Henning Date: Wed, 6 Aug 2025 18:42:19 -0400 Subject: [PATCH] nvk: Only run one INVALIDATE_SHADER_CACHES This is presumably the same cache across compute and 3d, so we only need to run one of these, not two. Reviewed-by: Mary Guillemard Reviewed-by: Mohamed Ahmed Part-of: --- src/nouveau/vulkan/nvk_cmd_buffer.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.c b/src/nouveau/vulkan/nvk_cmd_buffer.c index c0d08dc4510..f9c0d885c64 100644 --- a/src/nouveau/vulkan/nvk_cmd_buffer.c +++ b/src/nouveau/vulkan/nvk_cmd_buffer.c @@ -525,6 +525,10 @@ nvk_cmd_flush_wait_dep(struct nvk_cmd_buffer *cmd, const VkDependencyInfo *dep, bool wait) { + VkQueueFlags queue_flags = nvk_cmd_buffer_queue_flags(cmd); + enum nvkmd_engines engines = + nvk_queue_engines_from_queue_flags(queue_flags); + enum nvk_barrier barriers = 0; for (uint32_t i = 0; i < dep->memoryBarrierCount; i++) { @@ -548,18 +552,16 @@ nvk_cmd_flush_wait_dep(struct nvk_cmd_buffer *cmd, if (!barriers) return; - struct nv_push *p = nvk_cmd_buffer_push(cmd, 4); + struct nv_push *p = nvk_cmd_buffer_push(cmd, 2); if (barriers & NVK_BARRIER_FLUSH_SHADER_DATA) { - assert(barriers & (NVK_BARRIER_RENDER_WFI | NVK_BARRIER_COMPUTE_WFI)); - if (barriers & NVK_BARRIER_RENDER_WFI) { + /* This is also implicitly a WFI */ + if (engines & NVKMD_ENGINE_3D) { P_IMMD(p, NVA097, INVALIDATE_SHADER_CACHES, { .data = DATA_TRUE, .flush_data = FLUSH_DATA_TRUE, }); - } - - if (barriers & NVK_BARRIER_COMPUTE_WFI) { + } else { P_IMMD(p, NVA0C0, INVALIDATE_SHADER_CACHES, { .data = DATA_TRUE, .flush_data = FLUSH_DATA_TRUE,