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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25595>
This commit is contained in:
Faith Ekstrand
2023-10-06 18:46:07 -05:00
committed by Marge Bot
parent f450f3f256
commit 1929c0d954

View File

@@ -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,
});