diff options
author | clayjohn <claynjohn@gmail.com> | 2024-11-17 14:03:20 -0800 |
---|---|---|
committer | clayjohn <claynjohn@gmail.com> | 2024-11-17 14:03:20 -0800 |
commit | 985dc61386cab2f657acd8049052c182e2f32640 (patch) | |
tree | d7e51c9f6022f2c114841add92f0c5285fecdfb7 /modules | |
parent | 0f5f3bc9546b46b2029fc8896dc859697f1eab97 (diff) | |
download | redot-engine-985dc61386cab2f657acd8049052c182e2f32640.tar.gz |
Defer initializing BasisU encoder until it is needed.
This saves a lot of time on startup
Diffstat (limited to 'modules')
-rw-r--r-- | modules/basis_universal/image_compress_basisu.cpp | 14 |
1 files 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 <transcoder/basisu_transcoder.h> #ifdef TOOLS_ENABLED #include <encoder/basisu_comp.h> -#endif -void basis_universal_init() { -#ifdef TOOLS_ENABLED - basisu::basisu_encoder_init(); +static Mutex init_mutex; +static bool initialized = false; #endif +void basis_universal_init() { basist::basisu_transcoder_init(); } @@ -80,6 +79,13 @@ inline void _basisu_pad_mipmap(const uint8_t *p_image_mip_data, Vector<uint8_t> } Vector<uint8_t> basis_universal_packer(const Ref<Image> &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> image = p_image->duplicate(); |