Mesa (main): nir: add NIR_DEBUG envvar

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Dec 3 11:50:37 UTC 2021


Module: Mesa
Branch: main
Commit: f77ccdfb4a229b7a0cf83b7d8965faa969cf3a6f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f77ccdfb4a229b7a0cf83b7d8965faa969cf3a6f

Author: Juan A. Suarez Romero <jasuarez at igalia.com>
Date:   Wed Nov 17 16:10:52 2021 +0100

nir: add NIR_DEBUG envvar

Move all the NIR related debug environmental variables in a single
NIR_DEBUG one.

Use NIR_DEBUG=help to print all the available options.

v2:
 - Use a macro to simplify (Marcin, Jason)
 - Remove wrong changes (Marcin)

v3 (Marcin):
 - Remove rendundant NIR mentioning in option descriptions.
 - Unwrap option descriptions.
 - Ensure the constant is unsigned.
 - Use extern array to remove switch.

v4:
 - Add missing kernel shader (Jason).
 - Add unlikely() (Marcin).

Signed-off-by: Juan A. Suarez Romero <jasuarez at igalia.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Marcin Ślusarz <marcin.slusarz at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13840>

---

 .gitlab-ci/common/generate-env.sh                  |  2 +-
 .gitlab-ci/crosvm-runner.sh                        |  2 +-
 docs/envvars.rst                                   | 14 ++--
 src/compiler/nir/nir.c                             | 79 ++++++++++++++++++
 src/compiler/nir/nir.h                             | 94 +++++++++++++---------
 src/compiler/nir/nir_validate.c                    | 12 +--
 src/compiler/shader_info.h                         |  2 +-
 src/gallium/auxiliary/nir/nir_to_tgsi.c            |  5 +-
 src/gallium/auxiliary/nir/tgsi_to_nir.c            |  5 +-
 src/gallium/drivers/llvmpipe/ci/deqp-llvmpipe.toml |  3 +-
 src/gallium/frontends/lavapipe/ci/gitlab-ci.yml    |  3 +-
 11 files changed, 154 insertions(+), 67 deletions(-)

diff --git a/.gitlab-ci/common/generate-env.sh b/.gitlab-ci/common/generate-env.sh
index 7978ca3f618..bcb11407903 100755
--- a/.gitlab-ci/common/generate-env.sh
+++ b/.gitlab-ci/common/generate-env.sh
@@ -68,7 +68,7 @@ for var in \
     MESA_GL_VERSION_OVERRIDE \
     MESA_VK_IGNORE_CONFORMANCE_WARNING \
     MINIO_HOST \
-    NIR_VALIDATE \
+    NIR_DEBUG \
     PAN_I_WANT_A_BROKEN_VULKAN_DRIVER \
     PAN_MESA_DEBUG \
     PIGLIT_FRACTION \
diff --git a/.gitlab-ci/crosvm-runner.sh b/.gitlab-ci/crosvm-runner.sh
index 045201eae18..6cdcf5173f7 100755
--- a/.gitlab-ci/crosvm-runner.sh
+++ b/.gitlab-ci/crosvm-runner.sh
@@ -33,7 +33,7 @@ trap "exit \$exit_code" INT TERM
 trap "exit_code=\$?; kill $ERR_TAIL_PID $OUT_TAIL_PID" EXIT
 
 # We aren't testing LLVMPipe here, so we don't need to validate NIR on the host
-NIR_VALIDATE=0 LIBGL_ALWAYS_SOFTWARE="true" GALLIUM_DRIVER="$CROSVM_GALLIUM_DRIVER" stdbuf -oL crosvm run \
+NIR_DEBUG="novalidate" LIBGL_ALWAYS_SOFTWARE="true" GALLIUM_DRIVER="$CROSVM_GALLIUM_DRIVER" stdbuf -oL crosvm run \
   --gpu "$CROSVM_GPU_ARGS" \
   -m 4096 \
   -c 2 \
diff --git a/docs/envvars.rst b/docs/envvars.rst
index d6739fa3bf4..ed5fc310ae8 100644
--- a/docs/envvars.rst
+++ b/docs/envvars.rst
@@ -207,15 +207,11 @@ The following are only applicable for drivers that uses NIR, as they
 modify the behavior for the common ``NIR_PASS`` and ``NIR_PASS_V`` macros,
 that wrap calls to NIR lowering/optimizations.
 
-:envvar:`NIR_PRINT`
-   If defined, the resulting NIR shader will be printed out at each
-   successful NIR lowering/optimization call.
-:envvar:`NIR_TEST_CLONE`
-   If defined, cloning a NIR shader would be tested at each successful
-   NIR lowering/optimization call.
-:envvar:`NIR_TEST_SERIALIZE`
-   If defined, serialize and deserialize a NIR shader would be tested at
-   each successful NIR lowering/optimization call.
+:envvar:`NIR_DEBUG`
+   a comma-separated list of debug options to apply to NIR
+   shaders. Use `NIR_DEBUG=help` to print a list of available options.
+:envvar:`NIR_SKIP`
+   a comma-separated list of optimization/lowering passes to skip.
 
 Mesa Xlib driver environment variables
 --------------------------------------
diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c
index a538d64a6bd..f8287196032 100644
--- a/src/compiler/nir/nir.c
+++ b/src/compiler/nir/nir.c
@@ -38,6 +38,81 @@
 
 #include "main/menums.h" /* BITFIELD64_MASK */
 
+#ifndef NDEBUG
+uint32_t nir_debug = ~0;
+bool nir_debug_print_shader[MESA_SHADER_KERNEL + 1] = { 0 };
+
+static const struct debug_named_value nir_debug_control[] = {
+   { "clone", NIR_DEBUG_CLONE,
+     "Test cloning a shader at each successful lowering/optimization call" },
+   { "serialize", NIR_DEBUG_SERIALIZE,
+     "Test serialize and deserialize shader at each successful lowering/optimization call" },
+   { "novalidate", NIR_DEBUG_NOVALIDATE,
+     "Disable shader validation at each successful lowering/optimization call" },
+   { "validate_ssa_dominance", NIR_DEBUG_VALIDATE_SSA_DOMINANCE,
+     "Validate SSA dominance in shader at each successful lowering/optimization call" },
+   { "tgsi", NIR_DEBUG_TGSI,
+     "Dump NIR/TGSI shaders when doing a NIR<->TGSI translation" },
+   { "print", NIR_DEBUG_PRINT,
+     "Dump resulting shader after each successful lowering/optimization call" },
+   { "print_vs", NIR_DEBUG_PRINT_VS,
+     "Dump resulting vertex shader after each successful lowering/optimization call" },
+   { "print_tcs", NIR_DEBUG_PRINT_TCS,
+     "Dump resulting tessellation control shader after each successful lowering/optimization call" },
+   { "print_tes", NIR_DEBUG_PRINT_TES,
+     "Dump resulting tessellation evaluation shader after each successful lowering/optimization call" },
+   { "print_gs", NIR_DEBUG_PRINT_GS,
+     "Dump resulting geometry shader after each successful lowering/optimization call" },
+   { "print_fs", NIR_DEBUG_PRINT_FS,
+     "Dump resulting fragment shader after each successful lowering/optimization call" },
+   { "print_cs", NIR_DEBUG_PRINT_CS,
+     "Dump resulting compute shader after each successful lowering/optimization call" },
+   { "print_ts", NIR_DEBUG_PRINT_TS,
+     "Dump resulting task shader after each successful lowering/optimization call" },
+   { "print_ms", NIR_DEBUG_PRINT_MS,
+     "Dump resulting mesh shader after each successful lowering/optimization call" },
+   { "print_rgs", NIR_DEBUG_PRINT_RGS,
+     "Dump resulting raygen shader after each successful lowering/optimization call" },
+   { "print_ahs", NIR_DEBUG_PRINT_AHS,
+     "Dump resulting any-hit shader after each successful lowering/optimization call" },
+   { "print_chs", NIR_DEBUG_PRINT_CHS,
+     "Dump resulting closest-hit shader after each successful lowering/optimization call" },
+   { "print_mhs", NIR_DEBUG_PRINT_MHS,
+     "Dump resulting miss-hit shader after each successful lowering/optimization call" },
+   { "print_is", NIR_DEBUG_PRINT_IS,
+     "Dump resulting intersection shader after each successful lowering/optimization call" },
+   { "print_cbs", NIR_DEBUG_PRINT_CBS,
+     "Dump resulting callable shader after each successful lowering/optimization call" },
+   { "print_ks", NIR_DEBUG_PRINT_KS,
+     "Dump resulting kernel shader after each successful lowering/optimization call" },
+   { NULL }
+};
+
+DEBUG_GET_ONCE_FLAGS_OPTION(nir_debug, "NIR_DEBUG", nir_debug_control, 0)
+
+static void
+nir_process_debug_variable(void)
+{
+   if (unlikely(nir_debug == ~0)) {
+      nir_debug = debug_get_option_nir_debug();
+      nir_debug_print_shader[MESA_SHADER_VERTEX]       = NIR_DEBUG(PRINT_VS);
+      nir_debug_print_shader[MESA_SHADER_TESS_CTRL]    = NIR_DEBUG(PRINT_TCS);
+      nir_debug_print_shader[MESA_SHADER_TESS_EVAL]    = NIR_DEBUG(PRINT_TES);
+      nir_debug_print_shader[MESA_SHADER_GEOMETRY]     = NIR_DEBUG(PRINT_GS);
+      nir_debug_print_shader[MESA_SHADER_FRAGMENT]     = NIR_DEBUG(PRINT_FS);
+      nir_debug_print_shader[MESA_SHADER_COMPUTE]      = NIR_DEBUG(PRINT_CS);
+      nir_debug_print_shader[MESA_SHADER_TASK]         = NIR_DEBUG(PRINT_TS);
+      nir_debug_print_shader[MESA_SHADER_MESH]         = NIR_DEBUG(PRINT_MS);
+      nir_debug_print_shader[MESA_SHADER_RAYGEN]       = NIR_DEBUG(PRINT_RGS);
+      nir_debug_print_shader[MESA_SHADER_ANY_HIT]      = NIR_DEBUG(PRINT_AHS);
+      nir_debug_print_shader[MESA_SHADER_CLOSEST_HIT]  = NIR_DEBUG(PRINT_CHS);
+      nir_debug_print_shader[MESA_SHADER_MISS]         = NIR_DEBUG(PRINT_MHS);
+      nir_debug_print_shader[MESA_SHADER_INTERSECTION] = NIR_DEBUG(PRINT_IS);
+      nir_debug_print_shader[MESA_SHADER_CALLABLE]     = NIR_DEBUG(PRINT_CBS);
+      nir_debug_print_shader[MESA_SHADER_KERNEL]       = NIR_DEBUG(PRINT_KS);
+   }
+}
+#endif
 
 /** Return true if the component mask "mask" with bit size "old_bit_size" can
  * be re-interpreted to be used with "new_bit_size".
@@ -120,6 +195,10 @@ nir_shader_create(void *mem_ctx,
    nir_shader *shader = rzalloc(mem_ctx, nir_shader);
    ralloc_set_destructor(shader, nir_shader_destructor);
 
+#ifndef NDEBUG
+   nir_process_debug_variable();
+#endif
+
    exec_list_make_empty(&shader->variables);
 
    shader->options = options;
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 66db5238ba7..019e60f9238 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -62,6 +62,52 @@
 extern "C" {
 #endif
 
+extern uint32_t nir_debug;
+extern bool nir_debug_print_shader[MESA_SHADER_KERNEL + 1];
+
+#ifndef NDEBUG
+#define NIR_DEBUG(flag) unlikely(nir_debug & (NIR_DEBUG_ ## flag))
+#else
+#define NIR_DEBUG(flag) false
+#endif
+
+#define NIR_DEBUG_CLONE                  (1u << 0)
+#define NIR_DEBUG_SERIALIZE              (1u << 1)
+#define NIR_DEBUG_NOVALIDATE             (1u << 2)
+#define NIR_DEBUG_VALIDATE_SSA_DOMINANCE (1u << 3)
+#define NIR_DEBUG_TGSI                   (1u << 4)
+#define NIR_DEBUG_PRINT_VS               (1u << 5)
+#define NIR_DEBUG_PRINT_TCS              (1u << 6)
+#define NIR_DEBUG_PRINT_TES              (1u << 7)
+#define NIR_DEBUG_PRINT_GS               (1u << 8)
+#define NIR_DEBUG_PRINT_FS               (1u << 9)
+#define NIR_DEBUG_PRINT_CS               (1u << 10)
+#define NIR_DEBUG_PRINT_TS               (1u << 11)
+#define NIR_DEBUG_PRINT_MS               (1u << 12)
+#define NIR_DEBUG_PRINT_RGS              (1u << 13)
+#define NIR_DEBUG_PRINT_AHS              (1u << 14)
+#define NIR_DEBUG_PRINT_CHS              (1u << 15)
+#define NIR_DEBUG_PRINT_MHS              (1u << 16)
+#define NIR_DEBUG_PRINT_IS               (1u << 17)
+#define NIR_DEBUG_PRINT_CBS              (1u << 18)
+#define NIR_DEBUG_PRINT_KS               (1u << 19)
+
+#define NIR_DEBUG_PRINT (NIR_DEBUG_PRINT_VS  | \
+                         NIR_DEBUG_PRINT_TCS | \
+                         NIR_DEBUG_PRINT_TES | \
+                         NIR_DEBUG_PRINT_GS  | \
+                         NIR_DEBUG_PRINT_FS  | \
+                         NIR_DEBUG_PRINT_CS  | \
+                         NIR_DEBUG_PRINT_TS  | \
+                         NIR_DEBUG_PRINT_MS  | \
+                         NIR_DEBUG_PRINT_RGS | \
+                         NIR_DEBUG_PRINT_AHS | \
+                         NIR_DEBUG_PRINT_CHS | \
+                         NIR_DEBUG_PRINT_MHS | \
+                         NIR_DEBUG_PRINT_IS  | \
+                         NIR_DEBUG_PRINT_CBS | \
+                         NIR_DEBUG_PRINT_KS)
+
 #define NIR_FALSE 0u
 #define NIR_TRUE (~0u)
 #define NIR_MAX_VEC_COMPONENTS 16
@@ -4118,37 +4164,15 @@ should_skip_nir(const char *name)
    return comma_separated_list_contains(list, name);
 }
 
-static inline bool
-should_clone_nir(void)
-{
-   static int should_clone = -1;
-   if (should_clone < 0)
-      should_clone = env_var_as_boolean("NIR_TEST_CLONE", false);
-
-   return should_clone;
-}
-
-static inline bool
-should_serialize_deserialize_nir(void)
-{
-   static int test_serialize = -1;
-   if (test_serialize < 0)
-      test_serialize = env_var_as_boolean("NIR_TEST_SERIALIZE", false);
-
-   return test_serialize;
-}
-
 static inline bool
 should_print_nir(nir_shader *shader)
 {
-   static int should_print = -1;
-   if (should_print < 0)
-      should_print = env_var_as_unsigned("NIR_PRINT", 0);
-
-   if (should_print == 1)
-      return !shader->info.internal;
+   if (shader->info.internal ||
+       shader->info.stage < 0 ||
+       shader->info.stage > MESA_SHADER_KERNEL)
+      return false;
 
-   return should_print;
+   return unlikely(nir_debug_print_shader[shader->info.stage]);
 }
 #else
 static inline void nir_validate_shader(nir_shader *shader, const char *when) { (void) shader; (void)when; }
@@ -4156,9 +4180,7 @@ static inline void nir_validate_ssa_dominance(nir_shader *shader, const char *wh
 static inline void nir_metadata_set_validation_flag(nir_shader *shader) { (void) shader; }
 static inline void nir_metadata_check_validation_flag(nir_shader *shader) { (void) shader; }
 static inline bool should_skip_nir(UNUSED const char *pass_name) { return false; }
-static inline bool should_clone_nir(void) { return false; }
-static inline bool should_serialize_deserialize_nir(void) { return false; }
-static inline bool should_print_nir(nir_shader *shader) { return false; }
+static inline bool should_print_nir(UNUSED nir_shader *shader) { return false; }
 #endif /* NDEBUG */
 
 #define _PASS(pass, nir, do_pass) do {                               \
@@ -4167,34 +4189,34 @@ static inline bool should_print_nir(nir_shader *shader) { return false; }
       break;                                                         \
    }                                                                 \
    do_pass                                                           \
-   if (should_clone_nir()) {                                         \
+   if (NIR_DEBUG(CLONE)) {                                           \
       nir_shader *clone = nir_shader_clone(ralloc_parent(nir), nir); \
       nir_shader_replace(nir, clone);                                \
    }                                                                 \
-   if (should_serialize_deserialize_nir()) {                         \
+   if (NIR_DEBUG(SERIALIZE)) {                                       \
       nir_shader_serialize_deserialize(nir);                         \
    }                                                                 \
 } while (0)
 
 #define NIR_PASS(progress, nir, pass, ...) _PASS(pass, nir,          \
    nir_metadata_set_validation_flag(nir);                            \
-   if (should_print_nir(nir))                                           \
+   if (should_print_nir(nir))                                        \
       printf("%s\n", #pass);                                         \
    if (pass(nir, ##__VA_ARGS__)) {                                   \
       nir_validate_shader(nir, "after " #pass);                      \
       progress = true;                                               \
-      if (should_print_nir(nir))                                        \
+      if (should_print_nir(nir))                                     \
          nir_print_shader(nir, stdout);                              \
       nir_metadata_check_validation_flag(nir);                       \
    }                                                                 \
 )
 
 #define NIR_PASS_V(nir, pass, ...) _PASS(pass, nir,                  \
-   if (should_print_nir(nir))                                           \
+   if (should_print_nir(nir))                                        \
       printf("%s\n", #pass);                                         \
    pass(nir, ##__VA_ARGS__);                                         \
    nir_validate_shader(nir, "after " #pass);                         \
-   if (should_print_nir(nir))                                           \
+   if (should_print_nir(nir))                                        \
       nir_print_shader(nir, stdout);                                 \
 )
 
diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c
index fef8f6b7a32..f6e88a43920 100644
--- a/src/compiler/nir/nir_validate.c
+++ b/src/compiler/nir/nir_validate.c
@@ -1630,7 +1630,7 @@ validate_function_impl(nir_function_impl *impl, validate_state *state)
    static int validate_dominance = -1;
    if (validate_dominance < 0) {
       validate_dominance =
-         env_var_as_boolean("NIR_VALIDATE_SSA_DOMINANCE", false);
+         NIR_DEBUG(VALIDATE_SSA_DOMINANCE);
    }
    if (validate_dominance)
       validate_ssa_dominance(impl, state);
@@ -1707,10 +1707,7 @@ dump_errors(validate_state *state, const char *when)
 void
 nir_validate_shader(nir_shader *shader, const char *when)
 {
-   static int should_validate = -1;
-   if (should_validate < 0)
-      should_validate = env_var_as_boolean("NIR_VALIDATE", true);
-   if (!should_validate)
+   if (NIR_DEBUG(NOVALIDATE))
       return;
 
    validate_state state;
@@ -1761,10 +1758,7 @@ nir_validate_shader(nir_shader *shader, const char *when)
 void
 nir_validate_ssa_dominance(nir_shader *shader, const char *when)
 {
-   static int should_validate = -1;
-   if (should_validate < 0)
-      should_validate = env_var_as_boolean("NIR_VALIDATE", true);
-   if (!should_validate)
+   if (NIR_DEBUG(NOVALIDATE))
       return;
 
    validate_state state;
diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
index 9f517f45728..20e25ccf8ee 100644
--- a/src/compiler/shader_info.h
+++ b/src/compiler/shader_info.h
@@ -123,7 +123,7 @@ typedef struct shader_info {
    /* Descriptive name provided by the client; may be NULL */
    const char *label;
 
-   /* Shader is internal, and should be ignored by things like NIR_PRINT */
+   /* Shader is internal, and should be ignored by things like NIR_DEBUG=print */
    bool internal;
 
    /* SHA1 of the original source, used by shader detection in drivers. */
diff --git a/src/gallium/auxiliary/nir/nir_to_tgsi.c b/src/gallium/auxiliary/nir/nir_to_tgsi.c
index 3919485c474..c70bc200070 100644
--- a/src/gallium/auxiliary/nir/nir_to_tgsi.c
+++ b/src/gallium/auxiliary/nir/nir_to_tgsi.c
@@ -3061,7 +3061,6 @@ nir_to_tgsi(struct nir_shader *s,
 {
    struct ntt_compile *c;
    const void *tgsi_tokens;
-   bool debug = env_var_as_boolean("NIR_TO_TGSI_DEBUG", false);
    nir_variable_mode no_indirects_mask = ntt_no_indirects_mask(s, screen);
    bool native_integers = screen->get_shader_param(screen,
                                                    pipe_shader_type_from_mesa(s->info.stage),
@@ -3142,7 +3141,7 @@ nir_to_tgsi(struct nir_shader *s,
    NIR_PASS_V(s, nir_lower_locals_to_regs);
    NIR_PASS_V(s, nir_opt_dce);
 
-   if (debug) {
+   if (NIR_DEBUG(TGSI)) {
       fprintf(stderr, "NIR before translation to TGSI:\n");
       nir_print_shader(s, stderr);
    }
@@ -3192,7 +3191,7 @@ nir_to_tgsi(struct nir_shader *s,
 
    tgsi_tokens = ureg_get_tokens(c->ureg, NULL);
 
-   if (debug) {
+   if (NIR_DEBUG(TGSI)) {
       fprintf(stderr, "TGSI after translation from NIR:\n");
       tgsi_dump(tgsi_tokens, 0);
    }
diff --git a/src/gallium/auxiliary/nir/tgsi_to_nir.c b/src/gallium/auxiliary/nir/tgsi_to_nir.c
index 17149855953..150482b1634 100644
--- a/src/gallium/auxiliary/nir/tgsi_to_nir.c
+++ b/src/gallium/auxiliary/nir/tgsi_to_nir.c
@@ -2563,7 +2563,6 @@ tgsi_to_nir(const void *tgsi_tokens,
    struct nir_shader *s = NULL;
    uint8_t key[CACHE_KEY_SIZE];
    unsigned processor;
-   bool debug = env_var_as_boolean("TGSI_TO_NIR_DEBUG", false);
 
    if (allow_disk_cache)
       cache = screen->get_disk_shader_cache(screen);
@@ -2581,7 +2580,7 @@ tgsi_to_nir(const void *tgsi_tokens,
    if (s)
       return s;
 
-   if (debug) {
+   if (NIR_DEBUG(TGSI)) {
       fprintf(stderr, "TGSI before translation to NIR:\n");
       tgsi_dump(tgsi_tokens, 0);
    }
@@ -2593,7 +2592,7 @@ tgsi_to_nir(const void *tgsi_tokens,
    ttn_finalize_nir(c, screen);
    ralloc_free(c);
 
-   if (debug) {
+   if (NIR_DEBUG(TGSI)) {
       mesa_logi("NIR after translation from TGSI:\n");
       nir_log_shaderi(s);
    }
diff --git a/src/gallium/drivers/llvmpipe/ci/deqp-llvmpipe.toml b/src/gallium/drivers/llvmpipe/ci/deqp-llvmpipe.toml
index b98996b30b6..2236ef94ce0 100644
--- a/src/gallium/drivers/llvmpipe/ci/deqp-llvmpipe.toml
+++ b/src/gallium/drivers/llvmpipe/ci/deqp-llvmpipe.toml
@@ -35,8 +35,7 @@ deqp_args = [
   [deqp.env]
   # Stress test NIR clone/serialization for GLES3.1 (which should cover most of the featureset).
   # Costs about 30% extra runtime.
-  NIR_TEST_CLONE = "true"
-  NIR_TEST_SERIALIZE = "true"
+  NIR_DEBUG="clone,serialize"
 
 # Note that KHR-GL3* test sets include all tests from the previous
 # version, so we only need to run one test list (unlike dEQP-GLES,
diff --git a/src/gallium/frontends/lavapipe/ci/gitlab-ci.yml b/src/gallium/frontends/lavapipe/ci/gitlab-ci.yml
index 8a243cb4223..45efdc9f91f 100644
--- a/src/gallium/frontends/lavapipe/ci/gitlab-ci.yml
+++ b/src/gallium/frontends/lavapipe/ci/gitlab-ci.yml
@@ -21,8 +21,7 @@ lavapipe-nir-stress:
     - .lavapipe-test
   variables:
     DEQP_FRACTION: 100
-    NIR_TEST_CLONE: "true"
-    NIR_TEST_SERIALIZE: "true"
+    NIR_DEBUG: "clone,serialize"
 
 lavapipe-vk-asan:
   extends:



More information about the mesa-commit mailing list