agx: Add AGX_MESA_DEBUG=nopreamble option
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Wed, 15 Feb 2023 04:38:58 +0000 (23:38 -0500)
committerMarge Bot <emma+marge@anholt.net>
Sun, 5 Mar 2023 09:27:02 +0000 (09:27 +0000)
Useful both for ruling out issues with shader preambles as well as (in some
cases) making for a nicer reading experience of the compiled assembly.

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

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

index b8d1333..f24cdae 100644 (file)
@@ -46,6 +46,7 @@ static const struct debug_named_value agx_debug_options[] = {
    {"novalidate",AGX_DBG_NOVALIDATE,"Skip IR validation in debug builds"},
    {"noopt",     AGX_DBG_NOOPT,     "Disable backend optimizations"},
    {"wait",      AGX_DBG_WAIT,      "Wait after all async instructions"},
+   {"nopreamble",AGX_DBG_NOPREAMBLE,"Do not use shader preambles"},
    DEBUG_NAMED_VALUE_END
 };
 /* clang-format on */
@@ -1909,7 +1910,8 @@ agx_optimize_nir(nir_shader *nir, unsigned *preamble_size)
    NIR_PASS_V(nir, agx_nir_lower_address);
    NIR_PASS_V(nir, nir_lower_int64);
 
-   NIR_PASS_V(nir, agx_nir_opt_preamble, preamble_size);
+   if (likely(!(agx_debug & AGX_DBG_NOPREAMBLE)))
+      NIR_PASS_V(nir, agx_nir_opt_preamble, preamble_size);
 
    /* Forming preambles may dramatically reduce the instruction count
     * in certain blocks, causing some if-else statements to become
index 2a80fab..da1ac2a 100644 (file)
@@ -48,6 +48,7 @@ enum agx_dbg {
    AGX_DBG_NOVALIDATE  = BITFIELD_BIT(5),
    AGX_DBG_NOOPT       = BITFIELD_BIT(6),
    AGX_DBG_WAIT        = BITFIELD_BIT(7),
+   AGX_DBG_NOPREAMBLE  = BITFIELD_BIT(8),
 };
 /* clang-format on */