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
mutable gl::Limitations mNativeLimitations;
angle::FeaturesMtl mFeatures;
// track whether we initialized (or released) glslang
bool mGlslangInitialized;
};
} // namespace rx
......
......@@ -37,7 +37,9 @@ DisplayImpl *CreateMetalDisplay(const egl::DisplayState &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() {}
......@@ -67,7 +69,11 @@ angle::Result DisplayMtl::initializeImpl(egl::Display *display)
mCapsInitialized = false;
GlslangInitialize();
if (!mGlslangInitialized)
{
GlslangInitialize();
mGlslangInitialized = true;
}
if (!mState.featuresAllDisabled)
{
......@@ -91,7 +97,11 @@ void DisplayMtl::terminate()
mMetalDevice = nil;
mCapsInitialized = false;
GlslangRelease();
if (mGlslangInitialized)
{
GlslangRelease();
mGlslangInitialized = false;
}
}
bool DisplayMtl::testDeviceLost()
......
......@@ -575,7 +575,8 @@ RendererVk::RendererVk()
mDeviceLost(false),
mPipelineCacheVkUpdateTimeout(kPipelineCacheVkUpdatePeriod),
mPipelineCacheDirty(false),
mPipelineCacheInitialized(false)
mPipelineCacheInitialized(false),
mGlslangInitialized(false)
{
VkFormatProperties invalid = {0, 0, kInvalidFormatFeatureFlags};
mFormatProperties.fill(invalid);
......@@ -621,7 +622,11 @@ void RendererVk::onDestroy(vk::Context *context)
mPipelineCache.destroy(mDevice);
GlslangRelease();
if (mGlslangInitialized)
{
GlslangRelease();
mGlslangInitialized = false;
}
if (mDevice)
{
......@@ -922,7 +927,11 @@ angle::Result RendererVk::initialize(DisplayVk *displayVk,
// Store the physical device memory properties so we can find the right memory pools.
mMemoryProperties.init(mPhysicalDevice);
GlslangInitialize();
if (!mGlslangInitialized)
{
GlslangInitialize();
mGlslangInitialized = true;
}
// Initialize the format table.
mFormatTable.initialize(this, &mNativeTextureCaps, &mNativeCaps.compressedTextureFormats);
......
......@@ -352,6 +352,9 @@ class RendererVk : angle::NonCopyable
vk::PrimaryCommandBuffer commandBuffer;
};
std::deque<PendingOneOffCommands> mPendingOneOffCommands;
// track whether we initialized (or released) glslang
bool mGlslangInitialized;
};
} // 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