Defer initializing BasisU encoder until it is needed.

This saves a lot of time on startup
This commit is contained in:
clayjohn 2024-11-17 14:03:20 -08:00
parent 0f5f3bc954
commit 985dc61386

View File

@ -38,13 +38,12 @@
#include <transcoder/basisu_transcoder.h>
#ifdef TOOLS_ENABLED
#include <encoder/basisu_comp.h>
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<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();