zink: add ZINK_DEBUG=noreorder
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Fri, 15 Jul 2022 15:09:04 +0000 (11:09 -0400)
committerMarge Bot <emma+marge@anholt.net>
Tue, 26 Jul 2022 21:34:59 +0000 (21:34 +0000)
this will be useful for debugging

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17667>

docs/drivers/zink.rst
src/gallium/drivers/zink/zink_context.c
src/gallium/drivers/zink/zink_screen.c
src/gallium/drivers/zink/zink_screen.h

index 54f1814..ec83710 100644 (file)
@@ -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
 ^^^^^^^^^^^^^^^^^^^^^^^^
index f10ef80..6d77170 100644 (file)
@@ -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;
index 25a734c..b5379c2 100644 (file)
@@ -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
 };
 
index d1c1ecc..1f2a279 100644 (file)
@@ -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