agx: Add AGX_MESA_DEBUG=noopt option
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Wed, 3 Aug 2022 00:59:21 +0000 (20:59 -0400)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Mon, 8 Aug 2022 00:43:53 +0000 (20:43 -0400)
To disable the optimizer. Trying to root cause a Neverball bug, this
gives one less thing to worry.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17198>

src/asahi/compiler/agx_compile.c
src/asahi/compiler/agx_compiler.h

index 01541e0..d61d12e 100644 (file)
@@ -39,6 +39,7 @@ static const struct debug_named_value agx_debug_options[] = {
    {"verbose",   AGX_DBG_VERBOSE,      "Disassemble verbosely"},
    {"internal",  AGX_DBG_INTERNAL,     "Dump even internal shaders"},
    {"novalidate",AGX_DBG_NOVALIDATE,"Skip IR validation in debug builds"},
+   {"noopt",     AGX_DBG_NOOPT,     "Disable backend optimizations"},
    DEBUG_NAMED_VALUE_END
 };
 
@@ -1743,12 +1744,14 @@ agx_compile_shader_nir(nir_shader *nir,
    if (agx_debug & AGX_DBG_SHADERS && !skip_internal)
       agx_print_shader(ctx, stdout);
 
-   agx_optimizer(ctx);
-   agx_dce(ctx);
-   agx_validate(ctx, "Optimization");
+   if (likely(!(agx_debug & AGX_DBG_NOOPT))) {
+      agx_optimizer(ctx);
+      agx_dce(ctx);
+      agx_validate(ctx, "Optimization");
 
-   if (agx_debug & AGX_DBG_SHADERS && !skip_internal)
-      agx_print_shader(ctx, stdout);
+      if (agx_debug & AGX_DBG_SHADERS && !skip_internal)
+         agx_print_shader(ctx, stdout);
+   }
 
    agx_ra(ctx);
 
index b5a2c0f..7dc732c 100644 (file)
@@ -45,6 +45,7 @@ enum agx_dbg {
    AGX_DBG_VERBOSE     = BITFIELD_BIT(3),
    AGX_DBG_INTERNAL    = BITFIELD_BIT(4),
    AGX_DBG_NOVALIDATE  = BITFIELD_BIT(5),
+   AGX_DBG_NOOPT       = BITFIELD_BIT(6),
 };
 
 extern int agx_debug;