From 95fdd30b02292bc95e3fe016130240b6da4010a4 Mon Sep 17 00:00:00 2001 From: Kearwood Date: Thu, 6 Aug 2020 19:03:39 -0700 Subject: [PATCH] Now only initializing glslang when compiling shaders --- kraken/KRContext.cpp | 2 -- kraken/KRShaderManager.cpp | 8 ++++++++ kraken/KRShaderManager.h | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/kraken/KRContext.cpp b/kraken/KRContext.cpp index 184633a..37a6869 100755 --- a/kraken/KRContext.cpp +++ b/kraken/KRContext.cpp @@ -106,7 +106,6 @@ KRContext::KRContext(const KrInitializeInfo* initializeInfo) #endif createDeviceContexts(); - glslang::InitializeProcess(); } KRContext::~KRContext() { @@ -171,7 +170,6 @@ KRContext::~KRContext() { delete m_resourceMap; m_resourceMap = NULL; } - glslang::FinalizeProcess(); } void KRContext::SetLogCallback(log_callback *log_callback, void *user_data) diff --git a/kraken/KRShaderManager.cpp b/kraken/KRShaderManager.cpp index d733200..bc4c468 100644 --- a/kraken/KRShaderManager.cpp +++ b/kraken/KRShaderManager.cpp @@ -33,6 +33,7 @@ #include "KREngine-common.h" KRShaderManager::KRShaderManager(KRContext &context) : KRResourceManager(context) +, m_initializedGlslang(false) { } @@ -44,6 +45,9 @@ KRShaderManager::~KRShaderManager() delete (*name_itr).second; } } + if (m_initializedGlslang) { + glslang::FinalizeProcess(); + } } KRResource* KRShaderManager::loadResource(const std::string& name, const std::string& extension, KRDataBlock* data) @@ -118,5 +122,9 @@ const unordered_map &KRShaderManager::get(const std::st bool KRShaderManager::compileAll() { + if (!m_initializedGlslang) { + glslang::InitializeProcess(); + m_initializedGlslang = true; + } return true; } diff --git a/kraken/KRShaderManager.h b/kraken/KRShaderManager.h index 7978d68..02afd9d 100644 --- a/kraken/KRShaderManager.h +++ b/kraken/KRShaderManager.h @@ -61,6 +61,7 @@ public: private: unordered_map > m_shaders; + bool m_initializedGlslang; }; #endif /* defined(KRUNKNOWN_MANAGER_H) */