From a41ea582c4899b1b36fe3ba9e683773545492977 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 15 Jul 2022 11:09:04 -0400 Subject: [PATCH] zink: add ZINK_DEBUG=noreorder this will be useful for debugging Reviewed-by: Dave Airlie Part-of: --- docs/drivers/zink.rst | 2 ++ src/gallium/drivers/zink/zink_context.c | 2 +- src/gallium/drivers/zink/zink_screen.c | 1 + src/gallium/drivers/zink/zink_screen.h | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/drivers/zink.rst b/docs/drivers/zink.rst index 54f1814ff6d..ec837106567 100644 --- a/docs/drivers/zink.rst +++ b/docs/drivers/zink.rst @@ -282,6 +282,8 @@ variable: Emit full synchronization barriers before every draw and dispatch. ``compact`` Use a maximum of 4 descriptor sets +``noreorder`` + Do not reorder or optimize GL command streams Vulkan Validation Layers ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index f10ef80bff0..6d77170440d 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -3112,7 +3112,7 @@ resource_check_defer_buffer_barrier(struct zink_context *ctx, struct zink_resour static inline VkCommandBuffer get_cmdbuf(struct zink_context *ctx, struct zink_resource *res) { - if ((res->obj->access && !res->obj->unordered_barrier) || !ctx->batch.in_rp) { + if ((res->obj->access && !res->obj->unordered_barrier) || !ctx->batch.in_rp || (zink_debug & ZINK_DEBUG_NOREORDER) > 0) { zink_batch_no_rp(ctx); res->obj->unordered_barrier = false; return ctx->batch.state->cmdbuf; diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 25a734c611d..b5379c2388c 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -78,6 +78,7 @@ zink_debug_options[] = { { "validation", ZINK_DEBUG_VALIDATION, "Dump Validation layer output" }, { "sync", ZINK_DEBUG_SYNC, "Force synchronization before draws/dispatches" }, { "compact", ZINK_DEBUG_COMPACT, "Use only 4 descriptor sets" }, + { "noreorder", ZINK_DEBUG_NOREORDER, "Do not reorder command streams" }, DEBUG_NAMED_VALUE_END }; diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h index d1c1ecce3d6..1f2a279054f 100644 --- a/src/gallium/drivers/zink/zink_screen.h +++ b/src/gallium/drivers/zink/zink_screen.h @@ -69,6 +69,7 @@ enum zink_debug { ZINK_DEBUG_VALIDATION = (1<<3), ZINK_DEBUG_SYNC = (1<<4), ZINK_DEBUG_COMPACT = (1<<5), + ZINK_DEBUG_NOREORDER = (1<<6), }; #define NUM_SLAB_ALLOCATORS 3