diff options
Diffstat (limited to 'src/angle/patches')
-rw-r--r-- | src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch | 106 | ||||
-rw-r--r-- | src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch | 37 |
2 files changed, 143 insertions, 0 deletions
diff --git a/src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch b/src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch new file mode 100644 index 0000000000..97847ad684 --- /dev/null +++ b/src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch @@ -0,0 +1,106 @@ +From 014d3fcf6011109491b0489da9c1abb1fdc6dbdc Mon Sep 17 00:00:00 2001 +From: Kai Koehne <kai.koehne@theqtcompany.com> +Date: Mon, 24 Nov 2014 10:52:03 +0100 +Subject: [PATCH] ANGLE: Fix releasing textures after we kill D3D11 + +Cherry-pick upstream commit cc4cd2925b9a4f1142a86df131345a861c9d7cd9 +to fix crashes on exit. + +Task-number: QTBUG-42772 +Change-Id: Ib74be17f2b5fdd58f9e0568e1da74ba19e943019 +--- + src/3rdparty/angle/src/libGLESv2/Context.cpp | 6 ------ + src/3rdparty/angle/src/libGLESv2/Context.h | 1 - + src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp | 5 +++++ + src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h | 2 ++ + src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp | 2 ++ + src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 2 ++ + 6 files changed, 11 insertions(+), 7 deletions(-) + +diff --git a/src/3rdparty/angle/src/libGLESv2/Context.cpp b/src/3rdparty/angle/src/libGLESv2/Context.cpp +index b87689c..3772da6 100644 +--- a/src/3rdparty/angle/src/libGLESv2/Context.cpp ++++ b/src/3rdparty/angle/src/libGLESv2/Context.cpp +@@ -162,12 +162,6 @@ Context::~Context() + deleteTransformFeedback(mTransformFeedbackMap.begin()->first); + } + +- for (TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); i++) +- { +- i->second.set(NULL); +- } +- mIncompleteTextures.clear(); +- + for (TextureMap::iterator i = mZeroTextures.begin(); i != mZeroTextures.end(); i++) + { + i->second.set(NULL); +diff --git a/src/3rdparty/angle/src/libGLESv2/Context.h b/src/3rdparty/angle/src/libGLESv2/Context.h +index 1e890de..0699592 100644 +--- a/src/3rdparty/angle/src/libGLESv2/Context.h ++++ b/src/3rdparty/angle/src/libGLESv2/Context.h +@@ -247,7 +247,6 @@ class Context + int mClientVersion; + + TextureMap mZeroTextures; +- TextureMap mIncompleteTextures; + + typedef std::unordered_map<GLuint, Framebuffer*> FramebufferMap; + FramebufferMap mFramebufferMap; +diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp +index 97da6da..5cddd8a 100644 +--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp ++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp +@@ -27,6 +27,11 @@ RendererD3D::RendererD3D(egl::Display *display) + + RendererD3D::~RendererD3D() + { ++ cleanup(); ++} ++ ++void RendererD3D::cleanup() ++{ + for (gl::TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); ++i) + { + i->second.set(NULL); +diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h +index 9919207..a2f7787 100644 +--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h ++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h +@@ -160,6 +160,8 @@ class RendererD3D : public Renderer + const gl::Rectangle *scissor, bool blitRenderTarget, + bool blitDepth, bool blitStencil, GLenum filter) = 0; + ++ void cleanup(); ++ + egl::Display *mDisplay; + + private: +diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp +index e6d7f30..777308e 100644 +--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp ++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp +@@ -1870,6 +1870,8 @@ bool Renderer11::testDeviceResettable() + + void Renderer11::release() + { ++ RendererD3D::cleanup(); ++ + releaseShaderCompiler(); + releaseDeviceResources(); + +diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp +index 601cd24..18e6e2d 100644 +--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp ++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp +@@ -151,6 +151,8 @@ Renderer9::~Renderer9() + + void Renderer9::release() + { ++ RendererD3D::cleanup(); ++ + releaseShaderCompiler(); + releaseDeviceResources(); + +-- +1.9.4.msysgit.0 + diff --git a/src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch b/src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch new file mode 100644 index 0000000000..5fa244c1b5 --- /dev/null +++ b/src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch @@ -0,0 +1,37 @@ +From 5e277b05a16e7be24d36c600f158f8119ee583d8 Mon Sep 17 00:00:00 2001 +From: Andrew Knight <andrew.knight@theqtcompany.com> +Date: Mon, 1 Dec 2014 11:58:08 +0200 +Subject: [PATCH] ANGLE: Fix handling of shader source with fixed length + +This is a cherry-pick of upstream f60fab6d154f4c9bf599e92976cd8cee7f8633e0 +(See https://chromium-review.googlesource.com/231612) + +Task-number: QTBUG-42882 +Change-Id: I7b4bdc4b68a1b93ff514f09ce35dbf4e9360af9b +--- + src/3rdparty/angle/src/libGLESv2/Shader.cpp | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/3rdparty/angle/src/libGLESv2/Shader.cpp b/src/3rdparty/angle/src/libGLESv2/Shader.cpp +index 1cc17a0..5bca746 100644 +--- a/src/3rdparty/angle/src/libGLESv2/Shader.cpp ++++ b/src/3rdparty/angle/src/libGLESv2/Shader.cpp +@@ -51,7 +51,14 @@ void Shader::setSource(GLsizei count, const char *const *string, const GLint *le + + for (int i = 0; i < count; i++) + { +- stream << string[i]; ++ if (length == nullptr || length[i] < 0) ++ { ++ stream.write(string[i], std::strlen(string[i])); ++ } ++ else ++ { ++ stream.write(string[i], length[i]); ++ } + } + + mSource = stream.str(); +-- +1.9.4.msysgit.1 + |