vtn: Move initialization of mesa_spirv_debug to a helper

Importantly, this gives us a single once_flag instead of two so we
actually only initialize it once.  This race will probably never matter
in practice because it's just a debug var but this is cleaner.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30875>
This commit is contained in:
Faith Ekstrand 2024-08-27 09:13:34 -05:00 committed by Marge Bot
parent d8644a533e
commit ee7b596abc

View file

@ -212,6 +212,20 @@ static const struct debug_named_value mesa_spirv_debug_control[] = {
DEBUG_GET_ONCE_FLAGS_OPTION(mesa_spirv_debug, "MESA_SPIRV_DEBUG", mesa_spirv_debug_control, 0)
/* DO NOT CALL THIS FUNCTION DIRECTLY. Use mesa_spirv_debug_init() instead */
static void
initialize_mesa_spirv_debug(void)
{
mesa_spirv_debug = debug_get_option_mesa_spirv_debug();
}
static void
mesa_spirv_debug_init(void)
{
static once_flag initialized_debug_flag = ONCE_FLAG_INIT;
call_once(&initialized_debug_flag, initialize_mesa_spirv_debug);
}
static enum nir_spirv_debug_level
vtn_default_log_level(void)
{
@ -6823,14 +6837,6 @@ can_remove(nir_variable *var, void *data)
return !_mesa_set_search(vars_used_indirectly, var);
}
#ifndef NDEBUG
static void
initialize_mesa_spirv_debug(void)
{
mesa_spirv_debug = debug_get_option_mesa_spirv_debug();
}
#endif
nir_shader *
spirv_to_nir(const uint32_t *words, size_t word_count,
struct nir_spirv_specialization *spec, unsigned num_spec,
@ -6840,8 +6846,7 @@ spirv_to_nir(const uint32_t *words, size_t word_count,
{
#ifndef NDEBUG
static once_flag initialized_debug_flag = ONCE_FLAG_INIT;
call_once(&initialized_debug_flag, initialize_mesa_spirv_debug);
mesa_spirv_debug_init();
#endif
const uint32_t *word_end = words + word_count;
@ -7219,8 +7224,7 @@ spirv_library_to_nir_builder(FILE *fp, const uint32_t *words, size_t word_count,
const struct spirv_to_nir_options *options)
{
#ifndef NDEBUG
static once_flag initialized_debug_flag = ONCE_FLAG_INIT;
call_once(&initialized_debug_flag, initialize_mesa_spirv_debug);
mesa_spirv_debug_init();
#endif
const uint32_t *word_end = words + word_count;