|
@@ -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();
|