From 985dc61386cab2f657acd8049052c182e2f32640 Mon Sep 17 00:00:00 2001 From: clayjohn Date: Sun, 17 Nov 2024 14:03:20 -0800 Subject: [PATCH] Defer initializing BasisU encoder until it is needed. This saves a lot of time on startup --- modules/basis_universal/image_compress_basisu.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/basis_universal/image_compress_basisu.cpp b/modules/basis_universal/image_compress_basisu.cpp index 8ca5dba225..be28d89508 100644 --- a/modules/basis_universal/image_compress_basisu.cpp +++ b/modules/basis_universal/image_compress_basisu.cpp @@ -38,13 +38,12 @@ #include #ifdef TOOLS_ENABLED #include + +static Mutex init_mutex; +static bool initialized = false; #endif void basis_universal_init() { -#ifdef TOOLS_ENABLED - basisu::basisu_encoder_init(); -#endif - basist::basisu_transcoder_init(); } @@ -80,6 +79,13 @@ inline void _basisu_pad_mipmap(const uint8_t *p_image_mip_data, Vector } Vector basis_universal_packer(const Ref &p_image, Image::UsedChannels p_channels) { + init_mutex.lock(); + if (!initialized) { + basisu::basisu_encoder_init(); + initialized = true; + } + init_mutex.unlock(); + uint64_t start_time = OS::get_singleton()->get_ticks_msec(); Ref image = p_image->duplicate();