From 0a4aa612ba27d6b9e550f7c4a009f30fcfa0c93e Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Fri, 10 Jul 2020 13:05:32 +0200 Subject: mesa/main: factor out one-time-init into a helper This will make the next commit a bit cleaner. Reviewed-by: Kristian H. Kristensen Part-of: --- src/mesa/main/context.c | 95 +++++++++++++++++++++++++++---------------------- 1 file changed, 52 insertions(+), 43 deletions(-) diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 2b8becb806d..b8b11b0c450 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -340,14 +340,6 @@ _mesa_destroy_visual( struct gl_config *vis ) /*@{*/ -/** - * One-time initialization mutex lock. - * - * \sa Used by one_time_init(). - */ -mtx_t OneTimeLock = _MTX_INITIALIZER_NP; - - /** * Calls all the various one-time-fini functions in Mesa */ @@ -359,6 +351,56 @@ one_time_fini(void) _mesa_locale_fini(); } +/** + * Calls all the various one-time-init functions in Mesa + */ + +static void +one_time_init(void) +{ + GLuint i; + + STATIC_ASSERT(sizeof(GLbyte) == 1); + STATIC_ASSERT(sizeof(GLubyte) == 1); + STATIC_ASSERT(sizeof(GLshort) == 2); + STATIC_ASSERT(sizeof(GLushort) == 2); + STATIC_ASSERT(sizeof(GLint) == 4); + STATIC_ASSERT(sizeof(GLuint) == 4); + + _mesa_locale_init(); + + _mesa_one_time_init_extension_overrides(); + + _mesa_get_cpu_features(); + + for (i = 0; i < 256; i++) { + _mesa_ubyte_to_float_color_tab[i] = (float) i / 255.0F; + } + + atexit(one_time_fini); + +#if defined(DEBUG) + if (MESA_VERBOSE != 0) { + _mesa_debug(NULL, "Mesa " PACKAGE_VERSION " DEBUG build" MESA_GIT_SHA1 "\n"); + } +#endif + + /* Take a glsl type reference for the duration of libGL's life to avoid + * unecessary creation/destruction of glsl types. + */ + glsl_type_singleton_init_or_ref(); + + _mesa_init_remap_table(); +} + +/** + * One-time initialization mutex lock. + * + * \sa Used by _mesa_initialize(). + */ +mtx_t OneTimeLock = _MTX_INITIALIZER_NP; + + /** * Calls all the various one-time-init functions in Mesa. * @@ -376,41 +418,8 @@ _mesa_initialize(void) mtx_lock(&OneTimeLock); /* truly one-time init */ - if (!initialized) { - GLuint i; - - STATIC_ASSERT(sizeof(GLbyte) == 1); - STATIC_ASSERT(sizeof(GLubyte) == 1); - STATIC_ASSERT(sizeof(GLshort) == 2); - STATIC_ASSERT(sizeof(GLushort) == 2); - STATIC_ASSERT(sizeof(GLint) == 4); - STATIC_ASSERT(sizeof(GLuint) == 4); - - _mesa_locale_init(); - - _mesa_one_time_init_extension_overrides(); - - _mesa_get_cpu_features(); - - for (i = 0; i < 256; i++) { - _mesa_ubyte_to_float_color_tab[i] = (float) i / 255.0F; - } - - atexit(one_time_fini); - -#if defined(DEBUG) - if (MESA_VERBOSE != 0) { - _mesa_debug(NULL, "Mesa " PACKAGE_VERSION " DEBUG build" MESA_GIT_SHA1 "\n"); - } -#endif - - /* Take a glsl type reference for the duration of libGL's life to avoid - * unecessary creation/destruction of glsl types. - */ - glsl_type_singleton_init_or_ref(); - - _mesa_init_remap_table(); - } + if (!initialized) + one_time_init(); initialized = true; -- cgit v1.2.3