nvk: Reduce subc switches in cmd_invalidate_deps

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37018>
This commit is contained in:
Mel Henning
2025-08-18 12:58:08 -04:00
committed by Marge Bot
parent cb22409d72
commit 606fa193af
+29 -10
View File
@@ -648,27 +648,46 @@ nvk_cmd_invalidate_deps(struct nvk_cmd_buffer *cmd,
if (barriers & NVK_BARRIER_INVALIDATE_TEX_DATA) {
if (pdev->info.cls_eng3d >= MAXWELL_A) {
P_IMMD(p, NVA097, INVALIDATE_TEXTURE_DATA_CACHE_NO_WFI, {
.lines = LINES_ALL,
});
if (nvk_cmd_buffer_last_subchannel(cmd) == SUBC_NVA097) {
P_IMMD(p, NVA097, INVALIDATE_TEXTURE_DATA_CACHE_NO_WFI, {
.lines = LINES_ALL,
});
} else {
P_IMMD(p, NVA0C0, INVALIDATE_TEXTURE_DATA_CACHE_NO_WFI, {
.lines = LINES_ALL,
});
}
} else {
/* On Kepler, the _NO_WFI form doesn't appear to actually work
* properly. It exists in the headers but it doesn't fully
* invalidate everything. Even doing a full WFI before hand isn't
* sufficient.
*/
P_IMMD(p, NVA097, INVALIDATE_TEXTURE_DATA_CACHE, {
.lines = LINES_ALL,
});
if (nvk_cmd_buffer_last_subchannel(cmd) == SUBC_NVA097) {
P_IMMD(p, NVA097, INVALIDATE_TEXTURE_DATA_CACHE, {
.lines = LINES_ALL,
});
} else {
P_IMMD(p, NVA0C0, INVALIDATE_TEXTURE_DATA_CACHE, {
.lines = LINES_ALL,
});
}
}
}
if (barriers & (NVK_BARRIER_INVALIDATE_SHADER_DATA &
NVK_BARRIER_INVALIDATE_CONSTANT)) {
P_IMMD(p, NVA097, INVALIDATE_SHADER_CACHES_NO_WFI, {
.global_data = (barriers & NVK_BARRIER_INVALIDATE_SHADER_DATA) != 0,
.constant = (barriers & NVK_BARRIER_INVALIDATE_CONSTANT) != 0,
});
if (nvk_cmd_buffer_last_subchannel(cmd) == SUBC_NVA097) {
P_IMMD(p, NVA097, INVALIDATE_SHADER_CACHES_NO_WFI, {
.global_data = (barriers & NVK_BARRIER_INVALIDATE_SHADER_DATA) != 0,
.constant = (barriers & NVK_BARRIER_INVALIDATE_CONSTANT) != 0,
});
} else {
P_IMMD(p, NVA0C0, INVALIDATE_SHADER_CACHES_NO_WFI, {
.global_data = (barriers & NVK_BARRIER_INVALIDATE_SHADER_DATA) != 0,
.constant = (barriers & NVK_BARRIER_INVALIDATE_CONSTANT) != 0,
});
}
}
if (barriers & (NVK_BARRIER_INVALIDATE_MME_DATA)) {