nvk: Skip barriers if engine is not present

Reviewed-by: Thomas H.P. Andersen <phomes@gmail.com>
Reviewed-by: Mary Guillemard <mary@mary.zone>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36617>
This commit is contained in:
Mel Henning 2025-08-06 18:42:19 -04:00 committed by Marge Bot
parent a431e8dfe6
commit c94f721b72

View file

@ -529,6 +529,10 @@ nvk_cmd_flush_wait_dep(struct nvk_cmd_buffer *cmd,
const VkDependencyInfo *dep,
bool wait)
{
VkQueueFlags queue_flags = nvk_cmd_buffer_queue_flags(cmd);
enum nvkmd_engines engines =
nvk_queue_engines_from_queue_flags(queue_flags);
enum nvk_barrier barriers = 0;
/* For asymmetric, we don't know what the access flags will be yet.
@ -564,6 +568,9 @@ nvk_cmd_flush_wait_dep(struct nvk_cmd_buffer *cmd,
bar->srcAccessMask);
}
if (!(engines & (NVKMD_ENGINE_3D | NVKMD_ENGINE_COMPUTE)))
barriers &= ~NVK_BARRIER_FLUSH_SHADER_DATA;
if (!barriers)
return;
@ -655,6 +662,20 @@ nvk_cmd_invalidate_deps(struct nvk_cmd_buffer *cmd,
}
}
VkQueueFlags queue_flags = nvk_cmd_buffer_queue_flags(cmd);
enum nvkmd_engines engines =
nvk_queue_engines_from_queue_flags(queue_flags);
if (!(engines & (NVKMD_ENGINE_3D | NVKMD_ENGINE_COMPUTE)))
barriers &= ~(NVK_BARRIER_INVALIDATE_TEX_DATA |
NVK_BARRIER_INVALIDATE_RASTER_CACHE |
NVK_BARRIER_INVALIDATE_SHADER_DATA |
NVK_BARRIER_INVALIDATE_CONSTANT |
NVK_BARRIER_INVALIDATE_MME_DATA);
if (!(engines & NVKMD_ENGINE_COMPUTE))
barriers &= ~NVK_BARRIER_INVALIDATE_QMD_DATA;
if (!barriers)
return;