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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
committed by
Marge Bot
parent
6935fe5c68
commit
b13faff71c
@@ -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)) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user