diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 77ef3d59cf8..486d277b44f 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -4198,9 +4198,15 @@ void nir_metadata_check_validation_flag(nir_shader *shader); static inline bool should_skip_nir(const char *name) { - const char *list = get_once(getenv("NIR_SKIP")); + static const char *list = NULL; + if (!list) { + /* Comma separated list of names to skip. */ + list = getenv("NIR_SKIP"); + if (!list) + list = ""; + } - if (!list || !list[0]) + if (!list[0]) return false; return comma_separated_list_contains(list, name); @@ -4209,19 +4215,29 @@ should_skip_nir(const char *name) static inline bool should_clone_nir(void) { - return get_once(env_var_as_boolean("NIR_TEST_CLONE", false)); + 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) { - return get_once(env_var_as_boolean("NIR_TEST_SERIALIZE", false)); + 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) { - int should_print = get_once(env_var_as_unsigned("NIR_PRINT", 0)); + 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; diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c index f454a24c500..4d12b3aa61b 100644 --- a/src/compiler/nir/nir_validate.c +++ b/src/compiler/nir/nir_validate.c @@ -1532,7 +1532,12 @@ validate_function_impl(nir_function_impl *impl, validate_state *state) validate_assert(state, state->ssa_srcs->entries == 0); _mesa_set_clear(state->ssa_srcs, NULL); - if (get_once(env_var_as_boolean("NIR_VALIDATE_SSA_DOMINANCE", false))) + static int validate_dominance = -1; + if (validate_dominance < 0) { + validate_dominance = + env_var_as_boolean("NIR_VALIDATE_SSA_DOMINANCE", false); + } + if (validate_dominance) validate_ssa_dominance(impl, state); } @@ -1606,7 +1611,10 @@ dump_errors(validate_state *state, const char *when) void nir_validate_shader(nir_shader *shader, const char *when) { - if (!get_once(env_var_as_boolean("NIR_VALIDATE", true))) + static int should_validate = -1; + if (should_validate < 0) + should_validate = env_var_as_boolean("NIR_VALIDATE", true); + if (!should_validate) return; validate_state state;