From 1929c0d954579f1045d0ae3e9b032d1bdad8bb48 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Fri, 6 Oct 2023 18:46:07 -0500 Subject: [PATCH] nvk: Invalidate SKED caches at the top of command buffers This is the cache that caches QMDs. We need to invalidate it or else we can end up with cache collisions and end up running the wrong shader. Part-of: --- src/nouveau/vulkan/nvk_cmd_dispatch.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/nouveau/vulkan/nvk_cmd_dispatch.c b/src/nouveau/vulkan/nvk_cmd_dispatch.c index 035a9c9..26cc86e 100644 --- a/src/nouveau/vulkan/nvk_cmd_dispatch.c +++ b/src/nouveau/vulkan/nvk_cmd_dispatch.c @@ -20,6 +20,7 @@ #include "clc5c0.h" #include "nvk_cl9097.h" #include "nvk_cla0c0.h" +#include "nvk_clb1c0.h" #include "nvk_clc3c0.h" #include "nvk_clc597.h" #include "nvk_clc6c0.h" @@ -50,7 +51,10 @@ nvk_cmd_buffer_begin_compute(struct nvk_cmd_buffer *cmd, const VkCommandBufferBeginInfo *pBeginInfo) { if (cmd->vk.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY) { - struct nv_push *p = nvk_cmd_buffer_push(cmd, 4); + struct nv_push *p = nvk_cmd_buffer_push(cmd, 6); + if (nvk_cmd_buffer_compute_cls(cmd) >= MAXWELL_COMPUTE_B) { + P_IMMD(p, NVB1C0, INVALIDATE_SKED_CACHES, 0); + } P_IMMD(p, NVA0C0, INVALIDATE_SAMPLER_CACHE_NO_WFI, { .lines = LINES_ALL, }); -- 2.7.4