From b13faff71ca42833b041a540a004e702f23e7985 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 30 Jan 2023 20:11:56 -0600 Subject: [PATCH] nvk: Invalidate texture header and sampler caches each submit It's possible descriptors have been added or removed. We could track it, but there's really no point. Per-submit shouldn't be terrible. Part-of: --- src/nouveau/vulkan/nvk_cmd_draw.c | 3 --- src/nouveau/vulkan/nvk_device.c | 12 ++++++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/nouveau/vulkan/nvk_cmd_draw.c b/src/nouveau/vulkan/nvk_cmd_draw.c index ca942d2..9b80921 100644 --- a/src/nouveau/vulkan/nvk_cmd_draw.c +++ b/src/nouveau/vulkan/nvk_cmd_draw.c @@ -284,9 +284,6 @@ nvk_cmd_buffer_begin_graphics(struct nvk_cmd_buffer *cmd, P_IMMD(p, NV9097, SET_POINT_CENTER_MODE, V_OGL); P_IMMD(p, NV9097, SET_EDGE_FLAG, V_TRUE); P_IMMD(p, NV9097, SET_SAMPLER_BINDING, V_INDEPENDENTLY); - P_IMMD(p, NV9097, INVALIDATE_SAMPLER_CACHE, { - .lines = LINES_ALL - }); if (cmd->vk.level != VK_COMMAND_BUFFER_LEVEL_PRIMARY && (pBeginInfo->flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)) { diff --git a/src/nouveau/vulkan/nvk_device.c b/src/nouveau/vulkan/nvk_device.c index b78f9cd..75ce8db 100644 --- a/src/nouveau/vulkan/nvk_device.c +++ b/src/nouveau/vulkan/nvk_device.c @@ -216,12 +216,18 @@ nvk_queue_state_update(struct nvk_device *dev, P_NVA0C0_SET_TEX_HEADER_POOL_A(p, qs->images.bo->offset >> 32); P_NVA0C0_SET_TEX_HEADER_POOL_B(p, qs->images.bo->offset); P_NVA0C0_SET_TEX_HEADER_POOL_C(p, qs->images.alloc_count - 1); + P_IMMD(p, NVA0C0, INVALIDATE_TEXTURE_HEADER_CACHE_NO_WFI, { + .lines = LINES_ALL + }); /* 3D */ P_MTHD(p, NV9097, SET_TEX_HEADER_POOL_A); P_NV9097_SET_TEX_HEADER_POOL_A(p, qs->images.bo->offset >> 32); P_NV9097_SET_TEX_HEADER_POOL_B(p, qs->images.bo->offset); P_NV9097_SET_TEX_HEADER_POOL_C(p, qs->images.alloc_count - 1); + P_IMMD(p, NV9097, INVALIDATE_TEXTURE_HEADER_CACHE_NO_WFI, { + .lines = LINES_ALL + }); } if (qs->samplers.bo) { @@ -232,12 +238,18 @@ nvk_queue_state_update(struct nvk_device *dev, P_NVA0C0_SET_TEX_SAMPLER_POOL_A(p, qs->samplers.bo->offset >> 32); P_NVA0C0_SET_TEX_SAMPLER_POOL_B(p, qs->samplers.bo->offset); P_NVA0C0_SET_TEX_SAMPLER_POOL_C(p, qs->samplers.alloc_count - 1); + P_IMMD(p, NVA0C0, INVALIDATE_SAMPLER_CACHE_NO_WFI, { + .lines = LINES_ALL + }); /* 3D */ P_MTHD(p, NV9097, SET_TEX_SAMPLER_POOL_A); P_NV9097_SET_TEX_SAMPLER_POOL_A(p, qs->samplers.bo->offset >> 32); P_NV9097_SET_TEX_SAMPLER_POOL_B(p, qs->samplers.bo->offset); P_NV9097_SET_TEX_SAMPLER_POOL_C(p, qs->samplers.alloc_count - 1); + P_IMMD(p, NV9097, INVALIDATE_SAMPLER_CACHE_NO_WFI, { + .lines = LINES_ALL + }); } if (qs->slm.bo) { -- 2.7.4