Commit cc4cd292 by Jamie Madill

Fix releasing textures after we kill D3D11.

This bug was crashing the IncompleteTextureTest in Release mode. Fix this by releasing the textures before we free the D3D11 libraries. BUG=angle:838 Change-Id: I771e4cc6876e3529c5d26f36711dea9181e631f0 Reviewed-on: https://chromium-review.googlesource.com/231247Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarShannon Woods <shannonwoods@chromium.org>
parent 2b5420c0
...@@ -161,12 +161,6 @@ Context::~Context() ...@@ -161,12 +161,6 @@ Context::~Context()
deleteTransformFeedback(mTransformFeedbackMap.begin()->first); deleteTransformFeedback(mTransformFeedbackMap.begin()->first);
} }
for (TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); i++)
{
i->second.set(NULL);
}
mIncompleteTextures.clear();
for (auto &zeroTexture : mZeroTextures) for (auto &zeroTexture : mZeroTextures)
{ {
zeroTexture.second.set(NULL); zeroTexture.second.set(NULL);
......
...@@ -247,7 +247,6 @@ class Context ...@@ -247,7 +247,6 @@ class Context
int mClientVersion; int mClientVersion;
TextureMap mZeroTextures; TextureMap mZeroTextures;
TextureMap mIncompleteTextures;
typedef std::unordered_map<GLuint, Framebuffer*> FramebufferMap; typedef std::unordered_map<GLuint, Framebuffer*> FramebufferMap;
FramebufferMap mFramebufferMap; FramebufferMap mFramebufferMap;
......
...@@ -27,6 +27,11 @@ RendererD3D::RendererD3D(egl::Display *display) ...@@ -27,6 +27,11 @@ RendererD3D::RendererD3D(egl::Display *display)
RendererD3D::~RendererD3D() RendererD3D::~RendererD3D()
{ {
cleanup();
}
void RendererD3D::cleanup()
{
for (auto &incompleteTexture : mIncompleteTextures) for (auto &incompleteTexture : mIncompleteTextures)
{ {
incompleteTexture.second.set(NULL); incompleteTexture.second.set(NULL);
......
...@@ -159,6 +159,8 @@ class RendererD3D : public Renderer ...@@ -159,6 +159,8 @@ class RendererD3D : public Renderer
const gl::Rectangle *scissor, bool blitRenderTarget, const gl::Rectangle *scissor, bool blitRenderTarget,
bool blitDepth, bool blitStencil, GLenum filter) = 0; bool blitDepth, bool blitStencil, GLenum filter) = 0;
void cleanup();
egl::Display *mDisplay; egl::Display *mDisplay;
private: private:
......
...@@ -1902,6 +1902,8 @@ bool Renderer11::testDeviceResettable() ...@@ -1902,6 +1902,8 @@ bool Renderer11::testDeviceResettable()
void Renderer11::release() void Renderer11::release()
{ {
RendererD3D::cleanup();
releaseShaderCompiler(); releaseShaderCompiler();
releaseDeviceResources(); releaseDeviceResources();
......
...@@ -154,6 +154,8 @@ Renderer9::~Renderer9() ...@@ -154,6 +154,8 @@ Renderer9::~Renderer9()
void Renderer9::release() void Renderer9::release()
{ {
RendererD3D::cleanup();
releaseShaderCompiler(); releaseShaderCompiler();
releaseDeviceResources(); releaseDeviceResources();
......
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