Commit 8aea6d5a by Brandon Schade Committed by Commit Bot

glslang: enforce initialize and release as once per process

Bug: angleproject:4354 Change-Id: Ice0912a90d4e9a4fe3fdaf67d67292afc0eba8a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2073201 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent b9b4569b
...@@ -156,6 +156,9 @@ class DisplayMtl : public DisplayImpl ...@@ -156,6 +156,9 @@ class DisplayMtl : public DisplayImpl
mutable gl::Limitations mNativeLimitations; mutable gl::Limitations mNativeLimitations;
angle::FeaturesMtl mFeatures; angle::FeaturesMtl mFeatures;
// track whether we initialized (or released) glslang
bool mGlslangInitialized;
}; };
} // namespace rx } // namespace rx
......
...@@ -37,7 +37,9 @@ DisplayImpl *CreateMetalDisplay(const egl::DisplayState &state) ...@@ -37,7 +37,9 @@ DisplayImpl *CreateMetalDisplay(const egl::DisplayState &state)
return new DisplayMtl(state); return new DisplayMtl(state);
} }
DisplayMtl::DisplayMtl(const egl::DisplayState &state) : DisplayImpl(state), mUtils(this) {} DisplayMtl::DisplayMtl(const egl::DisplayState &state)
: DisplayImpl(state), mUtils(this), mGlslangInitialized(false)
{}
DisplayMtl::~DisplayMtl() {} DisplayMtl::~DisplayMtl() {}
...@@ -67,7 +69,11 @@ angle::Result DisplayMtl::initializeImpl(egl::Display *display) ...@@ -67,7 +69,11 @@ angle::Result DisplayMtl::initializeImpl(egl::Display *display)
mCapsInitialized = false; mCapsInitialized = false;
GlslangInitialize(); if (!mGlslangInitialized)
{
GlslangInitialize();
mGlslangInitialized = true;
}
if (!mState.featuresAllDisabled) if (!mState.featuresAllDisabled)
{ {
...@@ -91,7 +97,11 @@ void DisplayMtl::terminate() ...@@ -91,7 +97,11 @@ void DisplayMtl::terminate()
mMetalDevice = nil; mMetalDevice = nil;
mCapsInitialized = false; mCapsInitialized = false;
GlslangRelease(); if (mGlslangInitialized)
{
GlslangRelease();
mGlslangInitialized = false;
}
} }
bool DisplayMtl::testDeviceLost() bool DisplayMtl::testDeviceLost()
......
...@@ -575,7 +575,8 @@ RendererVk::RendererVk() ...@@ -575,7 +575,8 @@ RendererVk::RendererVk()
mDeviceLost(false), mDeviceLost(false),
mPipelineCacheVkUpdateTimeout(kPipelineCacheVkUpdatePeriod), mPipelineCacheVkUpdateTimeout(kPipelineCacheVkUpdatePeriod),
mPipelineCacheDirty(false), mPipelineCacheDirty(false),
mPipelineCacheInitialized(false) mPipelineCacheInitialized(false),
mGlslangInitialized(false)
{ {
VkFormatProperties invalid = {0, 0, kInvalidFormatFeatureFlags}; VkFormatProperties invalid = {0, 0, kInvalidFormatFeatureFlags};
mFormatProperties.fill(invalid); mFormatProperties.fill(invalid);
...@@ -621,7 +622,11 @@ void RendererVk::onDestroy(vk::Context *context) ...@@ -621,7 +622,11 @@ void RendererVk::onDestroy(vk::Context *context)
mPipelineCache.destroy(mDevice); mPipelineCache.destroy(mDevice);
GlslangRelease(); if (mGlslangInitialized)
{
GlslangRelease();
mGlslangInitialized = false;
}
if (mDevice) if (mDevice)
{ {
...@@ -922,7 +927,11 @@ angle::Result RendererVk::initialize(DisplayVk *displayVk, ...@@ -922,7 +927,11 @@ angle::Result RendererVk::initialize(DisplayVk *displayVk,
// Store the physical device memory properties so we can find the right memory pools. // Store the physical device memory properties so we can find the right memory pools.
mMemoryProperties.init(mPhysicalDevice); mMemoryProperties.init(mPhysicalDevice);
GlslangInitialize(); if (!mGlslangInitialized)
{
GlslangInitialize();
mGlslangInitialized = true;
}
// Initialize the format table. // Initialize the format table.
mFormatTable.initialize(this, &mNativeTextureCaps, &mNativeCaps.compressedTextureFormats); mFormatTable.initialize(this, &mNativeTextureCaps, &mNativeCaps.compressedTextureFormats);
......
...@@ -352,6 +352,9 @@ class RendererVk : angle::NonCopyable ...@@ -352,6 +352,9 @@ class RendererVk : angle::NonCopyable
vk::PrimaryCommandBuffer commandBuffer; vk::PrimaryCommandBuffer commandBuffer;
}; };
std::deque<PendingOneOffCommands> mPendingOneOffCommands; std::deque<PendingOneOffCommands> mPendingOneOffCommands;
// track whether we initialized (or released) glslang
bool mGlslangInitialized;
}; };
} // namespace rx } // namespace rx
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment