summaryrefslogtreecommitdiffstats
path: root/src/angle/patches
diff options
context:
space:
mode:
Diffstat (limited to 'src/angle/patches')
-rw-r--r--src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch265
-rw-r--r--src/angle/patches/0002-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch (renamed from src/angle/patches/0004-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch)25
-rw-r--r--src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch1092
-rw-r--r--src/angle/patches/0003-ANGLE-Add-support-for-querying-platform-device.patch (renamed from src/angle/patches/0005-ANGLE-Add-support-for-querying-platform-device.patch)53
-rw-r--r--src/angle/patches/0003-ANGLE-Fix-compilation-on-MSVC2010-2012.patch363
-rw-r--r--src/angle/patches/0004-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch (renamed from src/angle/patches/0006-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch)43
-rw-r--r--src/angle/patches/0005-ANGLE-Fix-compilation-without-d3d11.patch (renamed from src/angle/patches/0007-ANGLE-Fix-compilation-without-d3d11.patch)28
-rw-r--r--src/angle/patches/0006-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-requirements.patch57
-rw-r--r--src/angle/patches/0007-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch45
-rw-r--r--src/angle/patches/0008-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-require.patch57
-rw-r--r--src/angle/patches/0008-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch278
-rw-r--r--src/angle/patches/0009-ANGLE-Fix-winrt-backing-store-to-support-feature-lev.patch38
-rw-r--r--src/angle/patches/0009-ANGLE-glGetUniform-v-functions-to-work-properly.patch31
-rw-r--r--src/angle/patches/0010-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch36
-rw-r--r--src/angle/patches/0010-ANGLE-fixed-usage-of-shared-handles-for-WinRT-WinPho.patch57
-rw-r--r--src/angle/patches/0012-ANGLE-Fix-initialization-of-zero-sized-window.patch32
16 files changed, 1134 insertions, 1366 deletions
diff --git a/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch b/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch
index 1361b8b656..e8f11b5172 100644
--- a/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch
+++ b/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch
@@ -1,24 +1,25 @@
-From ed09eff731b5d286e0bf6a5958b937a50ecc2362 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@intopalo.com>
-Date: Tue, 7 Apr 2015 13:24:59 +0300
-Subject: [PATCH 1/5] ANGLE: Improve Windows Phone Support
+From bbc3a5f89821030dd2772cd8015070a3da9ad57e Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@theqtcompany.com>
+Date: Mon, 29 Feb 2016 11:09:24 +0100
+Subject: [PATCH 1/7] ANGLE: Improve Windows Phone Support
This contains compile fixes for Windows Phone as well as improved
orientation handling.
-Change-Id: Ia312b5318b977838a2953f1f530487cbf24974bc
+Change-Id: I5011e9980957ff0797db179b36c3be9cac6df497
---
src/3rdparty/angle/src/common/platform.h | 2 ++
.../renderer/d3d/d3d11/DebugAnnotator11.cpp | 2 +-
.../src/libANGLE/renderer/d3d/d3d11/NativeWindow.h | 4 +++
- .../src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 8 +++--
+ .../src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 8 ++++-
.../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 40 ++++++++++++++++++++++
- .../d3d/d3d11/winrt/CoreWindowNativeWindow.cpp | 31 +++++++++++++++--
- .../d3d/d3d11/winrt/CoreWindowNativeWindow.h | 34 +++++++++++++++++-
+ .../d3d/d3d11/winrt/CoreWindowNativeWindow.cpp | 33 ++++++++++++++++--
+ .../d3d/d3d11/winrt/CoreWindowNativeWindow.h | 35 ++++++++++++++++++-
.../d3d/d3d11/winrt/InspectableNativeWindow.cpp | 12 +++++++
.../d3d/d3d11/winrt/InspectableNativeWindow.h | 14 +++++++-
src/3rdparty/angle/src/libANGLE/validationEGL.cpp | 4 ++-
- 10 files changed, 142 insertions(+), 9 deletions(-)
+ .../src/third_party/systeminfo/SystemInfo.cpp | 4 +--
+ 11 files changed, 148 insertions(+), 10 deletions(-)
diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
index 56db297..4e3851c 100644
@@ -35,29 +36,31 @@ index 56db297..4e3851c 100644
# endif
# endif
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
-index bc7cdcc..fcca904 100644
+index f9d28e8..2e42859 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
-@@ -60,7 +60,7 @@ bool DebugAnnotator11::getStatus()
- {
- // ID3DUserDefinedAnnotation::GetStatus doesn't work with the Graphics Diagnostics tools in Visual Studio 2013.
+@@ -77,7 +77,7 @@ bool DebugAnnotator11::getStatus()
+ }
+
+ return true; // Default if initializeDevice() failed
+-#elif defined(_DEBUG)
++#elif defined(_DEBUG) && (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
+ static bool underCapture = true;
--#if defined(_DEBUG) && defined(ANGLE_ENABLE_WINDOWS_STORE)
-+#if defined(_DEBUG) && defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
- // In the Windows Store, we can use IDXGraphicsAnalysis. The call to GetDebugInterface1 only succeeds if the app is under capture.
- // This should only be called in DEBUG mode.
- // If an app links against DXGIGetDebugInterface1 in release mode then it will fail Windows Store ingestion checks.
+ // ID3DUserDefinedAnnotation::GetStatus doesn't work with the Graphics Diagnostics tools in
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
-index ce50c32..81b9ea7 100644
+index f28ce4f..1c94538 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
-@@ -49,11 +49,15 @@ namespace rx
+@@ -54,6 +54,7 @@ namespace rx
class NativeWindow
{
public:
+ enum RotationFlags { RotateNone = 0, RotateLeft = 1, RotateRight = 2 };
- explicit NativeWindow(EGLNativeWindowType window);
-
+ explicit NativeWindow(EGLNativeWindowType window,
+ const egl::Config *config,
+ bool directComposition);
+@@ -62,6 +63,9 @@ class NativeWindow
bool initialize();
bool getClientRect(LPRECT rect);
bool isIconic();
@@ -68,47 +71,50 @@ index ce50c32..81b9ea7 100644
HRESULT createSwapChain(ID3D11Device* device, DXGIFactory* factory,
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-index eba40a4..dbed23f 100644
+index f7757df..03159bb 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-@@ -230,7 +230,11 @@ Renderer11::Renderer11(egl::Display *display)
+@@ -10,7 +10,9 @@
+
+ #include <EGL/eglext.h>
+ #include <sstream>
++#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
+ #include <VersionHelpers.h>
++#endif
+
+ #include "common/tls.h"
+ #include "common/utilities.h"
+@@ -445,7 +447,11 @@ Renderer11::Renderer11(egl::Display *display)
+ }
}
- }
+#if defined(ANGLE_ENABLE_WINDOWS_STORE)
-+ if (requestedMajorVersion == EGL_DONT_CARE || requestedMajorVersion >= 9)
++ if (requestedMajorVersion == EGL_DONT_CARE || requestedMajorVersion >= 9)
+#else
- if (requestedMajorVersion == 9 && requestedMinorVersion == 3)
+ if (requestedMajorVersion == 9 && requestedMinorVersion == 3)
+#endif
- {
- mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_3);
- }
-@@ -587,10 +591,10 @@ egl::ConfigSet Renderer11::generateConfigs() const
- config.bindToTextureRGB = (colorBufferFormatInfo.format == GL_RGB);
- config.bindToTextureRGBA = (colorBufferFormatInfo.format == GL_RGBA || colorBufferFormatInfo.format == GL_BGRA_EXT);
- config.colorBufferType = EGL_RGB_BUFFER;
-- config.configCaveat = EGL_NONE;
- config.configID = static_cast<EGLint>(configs.size() + 1);
- // Can only support a conformant ES2 with feature level greater than 10.0.
- config.conformant = (mFeatureLevel >= D3D_FEATURE_LEVEL_10_0) ? (EGL_OPENGL_ES2_BIT | EGL_OPENGL_ES3_BIT_KHR) : EGL_NONE;
-+ config.configCaveat = config.conformant == EGL_NONE ? EGL_NON_CONFORMANT_CONFIG : EGL_NONE;
- config.depthSize = depthStencilBufferFormatInfo.depthBits;
- config.level = 0;
- config.matchNativePixmap = EGL_NONE;
-@@ -2290,7 +2294,7 @@ bool Renderer11::getShareHandleSupport() const
- // chrome needs BGRA. Once chrome fixes this, we should always support them.
- // PIX doesn't seem to support using share handles, so disable them.
- // Also disable share handles on Feature Level 9_3, since it doesn't support share handles on RGBA8 textures/swapchains.
-- return getRendererExtensions().textureFormatBGRA8888 && !gl::DebugAnnotationsActive() && !(mFeatureLevel <= D3D_FEATURE_LEVEL_9_3);
-+ return getRendererExtensions().textureFormatBGRA8888 && !gl::DebugAnnotationsActive();// && !(mFeatureLevel <= D3D_FEATURE_LEVEL_9_3); Qt: we don't care about the 9_3 limitation
- }
-
- bool Renderer11::getPostSubBufferSupport() const
+ {
+ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_3);
+ }
+@@ -946,12 +952,12 @@ egl::ConfigSet Renderer11::generateConfigs() const
+ config.bindToTextureRGBA = (colorBufferFormatInfo.format == GL_RGBA ||
+ colorBufferFormatInfo.format == GL_BGRA_EXT);
+ config.colorBufferType = EGL_RGB_BUFFER;
+- config.configCaveat = EGL_NONE;
+ config.configID = static_cast<EGLint>(configs.size() + 1);
+ // Can only support a conformant ES2 with feature level greater than 10.0.
+ config.conformant = (mRenderer11DeviceCaps.featureLevel >= D3D_FEATURE_LEVEL_10_0)
+ ? (EGL_OPENGL_ES2_BIT | EGL_OPENGL_ES3_BIT_KHR)
+ : 0;
++ config.configCaveat = config.conformant == EGL_NONE ? EGL_NON_CONFORMANT_CONFIG : EGL_NONE;
+
+ // PresentPathFast may not be conformant
+ if (mPresentPathFastEnabled)
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
-index 2558528..bcb2505 100644
+index a56d3fa..9432a7f 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
-@@ -154,8 +154,14 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
+@@ -222,8 +222,14 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe
const bool useSharedResource = !mNativeWindow.getNativeWindow() && mRenderer->getShareHandleSupport();
D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0};
@@ -123,9 +129,9 @@ index 2558528..bcb2505 100644
offscreenTextureDesc.Format = backbufferFormatInfo.texFormat;
offscreenTextureDesc.MipLevels = 1;
offscreenTextureDesc.ArraySize = 1;
-@@ -235,8 +241,14 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
- if (mDepthBufferFormat != GL_NONE)
- {
+@@ -336,8 +342,14 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe
+ d3d11::GetTextureFormatInfo(mDepthBufferFormat, mRenderer->getRenderer11DeviceCaps());
+
D3D11_TEXTURE2D_DESC depthStencilTextureDesc;
+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
+ const int textureLength = std::max(backbufferWidth, backbufferHeight);
@@ -138,18 +144,18 @@ index 2558528..bcb2505 100644
depthStencilTextureDesc.Format = depthBufferFormatInfo.texFormat;
depthStencilTextureDesc.MipLevels = 1;
depthStencilTextureDesc.ArraySize = 1;
-@@ -337,6 +349,7 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
+@@ -422,6 +434,7 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
return EGL_SUCCESS;
}
+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) || (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
// Can only call resize if we have already created our swap buffer and resources
- ASSERT(mSwapChain && mBackBufferTexture && mBackBufferRTView);
+ ASSERT(mSwapChain && mBackBufferTexture && mBackBufferRTView && mBackBufferSRView);
-@@ -379,6 +392,12 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
- }
+@@ -479,6 +492,12 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
+ mFirstSwap = true;
- return resetOffscreenTexture(backbufferWidth, backbufferHeight);
+ return resetOffscreenBuffers(backbufferWidth, backbufferHeight);
+#else
+ // Do nothing on Windows Phone apart from updating the internal buffer/width height
+ mWidth = backbufferWidth;
@@ -158,8 +164,8 @@ index 2558528..bcb2505 100644
+#endif
}
- EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swapInterval)
-@@ -539,6 +558,21 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+ DXGI_FORMAT SwapChain11::getSwapChainNativeFormat() const
+@@ -704,6 +723,21 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width,
float x2 = ((x + width) / float(mWidth)) * 2.0f - 1.0f;
float y2 = ((y + height) / float(mHeight)) * 2.0f - 1.0f;
@@ -181,7 +187,7 @@ index 2558528..bcb2505 100644
float u1 = x / float(mWidth);
float v1 = y / float(mHeight);
float u2 = (x + width) / float(mWidth);
-@@ -548,6 +582,7 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+@@ -723,6 +757,7 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width,
d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, u1, v2);
d3d11::SetPositionTexCoordVertex(&vertices[2], x2, y1, u2, v1);
d3d11::SetPositionTexCoordVertex(&vertices[3], x2, y2, u2, v2);
@@ -189,7 +195,7 @@ index 2558528..bcb2505 100644
deviceContext->Unmap(mQuadVB, 0);
-@@ -577,8 +612,13 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+@@ -752,8 +787,13 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width,
D3D11_VIEWPORT viewport;
viewport.TopLeftX = 0;
viewport.TopLeftY = 0;
@@ -197,14 +203,14 @@ index 2558528..bcb2505 100644
+ viewport.Width = (rotateL || rotateR) ? mHeight : mWidth;
+ viewport.Height = (rotateL || rotateR) ? mWidth : mHeight;
+#else
- viewport.Width = mWidth;
- viewport.Height = mHeight;
+ viewport.Width = static_cast<FLOAT>(mWidth);
+ viewport.Height = static_cast<FLOAT>(mHeight);
+#endif
viewport.MinDepth = 0.0f;
viewport.MaxDepth = 1.0f;
deviceContext->RSSetViewports(1, &viewport);
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
-index 8cfaa84..350526c 100644
+index 71f0e42..6a4795a 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
@@ -8,8 +8,6 @@
@@ -224,7 +230,7 @@ index 8cfaa84..350526c 100644
ComPtr<IPropertySet> props = propertySet;
ComPtr<IInspectable> win = window;
SIZE swapChainSize = {};
-@@ -68,6 +67,16 @@ bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet
+@@ -100,6 +99,16 @@ bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet
if (SUCCEEDED(result))
{
@@ -241,7 +247,7 @@ index 8cfaa84..350526c 100644
mNewClientRect = mClientRect;
mClientRectChanged = false;
return registerForSizeChangeEvents();
-@@ -85,6 +94,15 @@ bool CoreWindowNativeWindow::registerForSizeChangeEvents()
+@@ -117,6 +126,15 @@ bool CoreWindowNativeWindow::registerForSizeChangeEvents()
result = mCoreWindow->add_SizeChanged(sizeChangedHandler.Get(), &mSizeChangedEventToken);
}
@@ -257,22 +263,24 @@ index 8cfaa84..350526c 100644
if (SUCCEEDED(result))
{
return true;
-@@ -99,7 +117,14 @@ void CoreWindowNativeWindow::unregisterForSizeChangeEvents()
+@@ -131,7 +149,16 @@ void CoreWindowNativeWindow::unregisterForSizeChangeEvents()
{
(void)mCoreWindow->remove_SizeChanged(mSizeChangedEventToken);
}
++
+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
+ if (mDisplayInformation)
+ {
+ (void)mDisplayInformation->remove_OrientationChanged(mOrientationChangedEventToken);
+ }
+#endif
++
mSizeChangedEventToken.value = 0;
+ mOrientationChangedEventToken.value = 0;
}
- HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device, DXGIFactory *factory, DXGI_FORMAT format, unsigned int width, unsigned int height, DXGISwapChain **swapChain)
-@@ -128,7 +153,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device, DXGIFactor
+ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device,
+@@ -168,7 +195,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device,
if (SUCCEEDED(result))
{
@@ -282,7 +290,7 @@ index 8cfaa84..350526c 100644
// other devices DXGI_ERROR_INVALID_CALL should be returned because the combination of flags passed
// (DXGI_SWAP_CHAIN_FLAG_NONPREROTATED | DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE) are invalid flag combinations.
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
-index c230c84..59df9d5 100644
+index 7747005..4de235a 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
@@ -12,8 +12,10 @@
@@ -296,7 +304,7 @@ index c230c84..59df9d5 100644
namespace rx
{
-@@ -32,11 +34,13 @@ class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enabl
+@@ -42,11 +44,13 @@ class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enabl
private:
ComPtr<ABI::Windows::UI::Core::ICoreWindow> mCoreWindow;
ComPtr<IMap<HSTRING, IInspectable*>> mPropertyMap;
@@ -311,46 +319,47 @@ index c230c84..59df9d5 100644
{
public:
CoreWindowSizeChangedHandler() { }
-@@ -68,6 +72,34 @@ class CoreWindowSizeChangedHandler :
+@@ -78,6 +82,35 @@ class CoreWindowSizeChangedHandler :
return S_OK;
}
-+ IFACEMETHOD(Invoke)(ABI::Windows::Graphics::Display::IDisplayInformation *displayInformation, IInspectable *)
-+ {
-+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
-+ NativeWindow::RotationFlags flags = NativeWindow::RotateNone;
-+ ABI::Windows::Graphics::Display::DisplayOrientations orientation;
-+ if (SUCCEEDED(displayInformation->get_CurrentOrientation(&orientation)))
++ IFACEMETHOD(Invoke)(ABI::Windows::Graphics::Display::IDisplayInformation *displayInformation, IInspectable *)
+ {
-+ switch (orientation)
++ #if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++ NativeWindow::RotationFlags flags = NativeWindow::RotateNone;
++ ABI::Windows::Graphics::Display::DisplayOrientations orientation;
++ if (SUCCEEDED(displayInformation->get_CurrentOrientation(&orientation)))
+ {
-+ case ABI::Windows::Graphics::Display::DisplayOrientations_Landscape:
-+ flags = NativeWindow::RotateLeft;
-+ break;
-+ case ABI::Windows::Graphics::Display::DisplayOrientations_LandscapeFlipped:
-+ flags = NativeWindow::RotateRight;
-+ break;
-+ default:
-+ break;
++ switch (orientation)
++ {
++ case ABI::Windows::Graphics::Display::DisplayOrientations_Landscape:
++ flags = NativeWindow::RotateLeft;
++ break;
++ case ABI::Windows::Graphics::Display::DisplayOrientations_LandscapeFlipped:
++ flags = NativeWindow::RotateRight;
++ break;
++ default:
++ break;
++ }
+ }
++ std::shared_ptr<InspectableNativeWindow> host = mHost.lock();
++ if (host)
++ {
++ host->setRotationFlags(flags);
++ }
++ #endif
++ return S_OK;
+ }
-+ std::shared_ptr<InspectableNativeWindow> host = mHost.lock();
-+ if (host)
-+ {
-+ host->setRotationFlags(flags);
-+ }
-+#endif
-+ return S_OK;
-+ }
++
+
private:
std::weak_ptr<InspectableNativeWindow> mHost;
};
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
-index 7ac53c7..2bf48c5 100644
+index 47a6dae..c9b203e 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
-@@ -69,6 +69,18 @@ bool NativeWindow::getClientRect(RECT *rect)
+@@ -80,6 +80,18 @@ bool NativeWindow::getClientRect(RECT *rect)
return false;
}
@@ -370,11 +379,11 @@ index 7ac53c7..2bf48c5 100644
{
return false;
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
-index e89c900..575bdf8 100644
+index 4b9cf80..70e5fe7 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
-@@ -34,7 +34,8 @@ class InspectableNativeWindow
- mRequiresSwapChainScaling(false),
+@@ -36,7 +36,8 @@ class InspectableNativeWindow
+ mSwapChainScale(1.0f),
mClientRectChanged(false),
mClientRect({0,0,0,0}),
- mNewClientRect({0,0,0,0})
@@ -383,7 +392,7 @@ index e89c900..575bdf8 100644
{
mSizeChangedEventToken.value = 0;
}
-@@ -72,12 +73,23 @@ class InspectableNativeWindow
+@@ -94,6 +95,16 @@ class InspectableNativeWindow
}
}
@@ -397,9 +406,10 @@ index e89c900..575bdf8 100644
+ mRotationFlags = flags;
+ }
+
- protected:
- bool mSupportsSwapChainResize;
- bool mRequiresSwapChainScaling;
+ protected:
+ virtual HRESULT scaleSwapChain(const SIZE &windowSize, const RECT &clientRect) = 0;
+
+@@ -104,6 +115,7 @@ class InspectableNativeWindow
RECT mClientRect;
RECT mNewClientRect;
bool mClientRectChanged;
@@ -408,10 +418,10 @@ index e89c900..575bdf8 100644
EventRegistrationToken mSizeChangedEventToken;
};
diff --git a/src/3rdparty/angle/src/libANGLE/validationEGL.cpp b/src/3rdparty/angle/src/libANGLE/validationEGL.cpp
-index 4e3b44b..12ee6a2 100644
+index bff3c94..972f6a7 100644
--- a/src/3rdparty/angle/src/libANGLE/validationEGL.cpp
+++ b/src/3rdparty/angle/src/libANGLE/validationEGL.cpp
-@@ -160,7 +160,7 @@ Error ValidateCreateContext(Display *display, Config *configuration, gl::Context
+@@ -269,7 +269,7 @@ Error ValidateCreateContext(Display *display, Config *configuration, gl::Context
return Error(EGL_BAD_CONFIG);
}
@@ -420,20 +430,35 @@ index 4e3b44b..12ee6a2 100644
{
return Error(EGL_BAD_CONFIG);
}
-@@ -488,11 +488,13 @@ Error ValidateCreatePbufferFromClientBuffer(Display *display, EGLenum buftype, E
- return Error(EGL_BAD_ATTRIBUTE);
- }
+@@ -496,6 +496,7 @@ Error ValidateCreatePbufferSurface(Display *display, Config *config, const Attri
+ return Error(EGL_BAD_MATCH);
+ }
+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) // On Windows Store, we know the originating texture came from D3D11, so bypass this check
- const Caps &caps = display->getCaps();
- if (textureFormat != EGL_NO_TEXTURE && !caps.textureNPOT && (!gl::isPow2(width) || !gl::isPow2(height)))
- {
- return Error(EGL_BAD_MATCH);
- }
-+#endif
+ const Caps &caps = display->getCaps();
+
+ EGLenum textureFormat = attributes.get(EGL_TEXTURE_FORMAT, EGL_NO_TEXTURE);
+@@ -519,6 +520,7 @@ Error ValidateCreatePbufferSurface(Display *display, Config *config, const Attri
+ {
+ return Error(EGL_BAD_MATCH);
}
++#endif
return Error(EGL_SUCCESS);
+ }
+diff --git a/src/3rdparty/angle/src/third_party/systeminfo/SystemInfo.cpp b/src/3rdparty/angle/src/third_party/systeminfo/SystemInfo.cpp
+index 97dfcaa..e082895 100644
+--- a/src/3rdparty/angle/src/third_party/systeminfo/SystemInfo.cpp
++++ b/src/3rdparty/angle/src/third_party/systeminfo/SystemInfo.cpp
+@@ -26,7 +26,7 @@
+ #include <windows.h>
+ #include "common/platform.h"
+
+-#if _WIN32_WINNT_WINBLUE
++#if _WIN32_WINNT_WINBLUE && WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
+ #include <versionhelpers.h>
+ #endif
+
--
-2.1.4
+2.7.0.windows.1
diff --git a/src/angle/patches/0004-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch b/src/angle/patches/0002-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch
index ff93920317..9503ae1090 100644
--- a/src/angle/patches/0004-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch
+++ b/src/angle/patches/0002-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch
@@ -1,34 +1,34 @@
-From bbb62a69dd2b49d7cc4214937077c22b6997ffac Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@intopalo.com>
-Date: Fri, 27 Mar 2015 17:27:38 +0200
-Subject: [PATCH 4/5] ANGLE: Dynamically load D3D compiler from a list
+From 7dd1de8a519324e6ec7dbfede1b446980cb5954f Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@theqtcompany.com>
+Date: Tue, 1 Mar 2016 13:28:02 +0100
+Subject: [PATCH 2/7] ANGLE: Dynamically load D3D compiler from a list
If the default compiler cannot be found, load it from a list of DLL names,
including a non-versioned proxy DLL provided by Qt. On Desktop Windows,
the default compiler can also be specified by an environment variable,
QT_D3DCOMPILER_DLL.
-Change-Id: I0d7a8a8a36cc571836f8fa59ea14513b9b19c19b
+Change-Id: Ic6d6e37095b838b8a636b029b72467f156b850cb
---
- .../src/libANGLE/renderer/d3d/HLSLCompiler.cpp | 25 ++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
+ .../src/libANGLE/renderer/d3d/HLSLCompiler.cpp | 26 ++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
-index 9c72d6f..8961a36 100644
+index e8b1af3..0d298bb 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
@@ -12,6 +12,10 @@
-
+ #include "libANGLE/histogram_macros.h"
#include "third_party/trace_event/trace_event.h"
+#ifndef QT_D3DCOMPILER_DLL
+#define QT_D3DCOMPILER_DLL D3DCOMPILER_DLL
+#endif
+
- // Definitions local to the translation unit
+ #if ANGLE_APPEND_ASSEMBLY_TO_SHADER_DEBUG_INFO == ANGLE_ENABLED
namespace
{
-@@ -143,6 +147,27 @@ bool HLSLCompiler::initialize()
+@@ -128,6 +132,28 @@ gl::Error HLSLCompiler::initialize()
}
#endif // ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES
@@ -53,9 +53,10 @@ index 9c72d6f..8961a36 100644
+ break;
+ }
+
++
if (!mD3DCompilerModule)
{
// Load the version of the D3DCompiler DLL associated with the Direct3D version ANGLE was built with.
--
-2.1.4
+2.7.0.windows.1
diff --git a/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch b/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch
index e28bc797e3..dc091b0497 100644
--- a/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch
+++ b/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch
@@ -1,7 +1,7 @@
-From 6f98a957829fd37106fb1f1c9f43a5bad626cdfc Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@intopalo.com>
-Date: Wed, 25 Mar 2015 20:21:33 +0200
-Subject: [PATCH 2/5] ANGLE: Fix compilation with MinGW
+From c6b9e598384563a641efdff56fdbdb0d7a561ec4 Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@theqtcompany.com>
+Date: Thu, 10 Mar 2016 15:12:58 +0100
+Subject: [PATCH] ANGLE: Fix compilation with MinGW
This adds definition guards for Direct3D 11 and DirectX SDK layers, which
are only available in very recent versions (4.9.2 rev 4) of MinGW builds.
@@ -9,43 +9,27 @@ It additionally adds a few missing includes needed for compilation.
Change-Id: I254c208209c0071fae5efb6727f2b3cfd5542da6
---
- src/3rdparty/angle/src/common/mathutil.h | 4 +
- src/3rdparty/angle/src/common/platform.h | 10 +-
- src/3rdparty/angle/src/libANGLE/angletypes.h | 1 +
- .../src/libANGLE/renderer/d3d/HLSLCompiler.cpp | 9 ++
- .../src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp | 6 +
- .../src/libANGLE/renderer/d3d/d3d11/Clear11.cpp | 4 +
- .../renderer/d3d/d3d11/DebugAnnotator11.cpp | 10 ++
- .../libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h | 2 +
- .../src/libANGLE/renderer/d3d/d3d11/Query11.cpp | 7 +
- .../src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 83 +++++++++--
- .../src/libANGLE/renderer/d3d/d3d11/Renderer11.h | 3 +-
- .../renderer/d3d/d3d11/renderer11_utils.cpp | 152 +++++++++++++++++++++
- .../src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp | 4 +-
- 13 files changed, 283 insertions(+), 12 deletions(-)
+ src/3rdparty/angle/src/common/platform.h | 10 ++-
+ .../src/libANGLE/renderer/d3d/HLSLCompiler.cpp | 9 +++
+ .../src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp | 6 ++
+ .../src/libANGLE/renderer/d3d/d3d11/Clear11.cpp | 4 +
+ .../renderer/d3d/d3d11/DebugAnnotator11.cpp | 10 +++
+ .../libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h | 2 +
+ .../libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp | 2 +
+ .../src/libANGLE/renderer/d3d/d3d11/Query11.cpp | 14 ++++++++++++++
+ .../src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 32 +++++++-
+ .../src/libANGLE/renderer/d3d/d3d11/Renderer11.h | 4 +
+ .../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 10 +++
+ .../src/libANGLE/renderer/d3d/d3d11/SwapChain11.h | 2 +
+ .../renderer/d3d/d3d11/renderer11_utils.cpp | 92 ++++++++++++++++++++++
+ .../renderer/d3d/d3d11/win32/NativeWindow.cpp | 8 ++
+ .../src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp | 4 +-
+ src/3rdparty/angle/src/libEGL/libEGL_mingw32.def | 27 ++++---
+ src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def | 19 +++++
+ .../angle/src/libGLESv2/libGLESv2_mingw32.def | 32 +++++++-
+ .../angle/src/libGLESv2/libGLESv2d_mingw32.def | 32 +++++++-
+ 19 files changed, 296 insertions(+), 21 deletions(-)
-diff --git a/src/3rdparty/angle/src/common/mathutil.h b/src/3rdparty/angle/src/common/mathutil.h
-index e096b1a..1015bd2 100644
---- a/src/3rdparty/angle/src/common/mathutil.h
-+++ b/src/3rdparty/angle/src/common/mathutil.h
-@@ -119,6 +119,9 @@ inline bool supportsSSE2()
- return supports;
- }
-
-+#if defined(__GNUC__)
-+ supports = __builtin_cpu_supports("sse2");
-+#else
- int info[4];
- __cpuid(info, 0);
-
-@@ -128,6 +131,7 @@ inline bool supportsSSE2()
-
- supports = (info[3] >> 26) & 1;
- }
-+#endif
-
- checked = true;
-
diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
index 4e3851c..be4cb94 100644
--- a/src/3rdparty/angle/src/common/platform.h
@@ -69,23 +53,11 @@ index 4e3851c..be4cb94 100644
# include <d3dcompiler.h>
# endif
-diff --git a/src/3rdparty/angle/src/libANGLE/angletypes.h b/src/3rdparty/angle/src/libANGLE/angletypes.h
-index a5f471d..e4e08b5 100644
---- a/src/3rdparty/angle/src/libANGLE/angletypes.h
-+++ b/src/3rdparty/angle/src/libANGLE/angletypes.h
-@@ -13,6 +13,7 @@
- #include "libANGLE/RefCountObject.h"
-
- #include <stdint.h>
-+#include <float.h>
-
- namespace gl
- {
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
-index d709dca..9c72d6f 100644
+index 0d298bb..df0257e 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
-@@ -22,6 +22,15 @@ namespace
+@@ -25,6 +25,15 @@ namespace
#define CREATE_COMPILER_FLAG_INFO(flag) { flag, #flag }
@@ -102,12 +74,12 @@ index d709dca..9c72d6f 100644
{
UINT mFlag;
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
-index 3b36c64..d56b0ea 100644
+index 66e2d67..0d5dc08 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
-@@ -12,6 +12,12 @@
- #include "libANGLE/renderer/d3d/d3d11/Renderer11.h"
- #include "libANGLE/renderer/d3d/d3d11/formatutils11.h"
+@@ -29,6 +29,12 @@ GLuint ReadIndexValueFromIndices(const uint8_t *data, size_t index)
+ typedef GLuint (*ReadIndexValueFunction)(const uint8_t *data, size_t index);
+ }
+#if defined(ANGLE_MINGW32_COMPAT)
+typedef enum D3D11_MAP_FLAG {
@@ -117,44 +89,39 @@ index 3b36c64..d56b0ea 100644
+
namespace rx
{
-
+ PackPixelsParams::PackPixelsParams()
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
-index ae373f5..057c3be 100644
+index 03b28c2..cd95c65 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
-@@ -133,12 +133,14 @@ Clear11::Clear11(Renderer11 *renderer)
- mIntClearShader = CreateClearShader(device, DXGI_FORMAT_R32G32B32A32_SINT, g_VS_ClearSint, g_PS_ClearSint );
- }
+@@ -262,7 +262,9 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl
+ RenderTarget11* maskedClearDepthStencil = nullptr;
+ ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext();
+#if defined(ANGLE_ENABLE_D3D11_1)
- if (renderer->getDeviceContext1IfSupported())
- {
- D3D11_FEATURE_DATA_D3D11_OPTIONS d3d11Options;
- device->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS, &d3d11Options, sizeof(D3D11_FEATURE_DATA_D3D11_OPTIONS));
- mSupportsClearView = (d3d11Options.ClearView != FALSE);
- }
+ ID3D11DeviceContext1 *deviceContext1 = mRenderer->getDeviceContext1IfSupported();
+#endif
- }
+ ID3D11Device *device = mRenderer->getDevice();
- Clear11::~Clear11()
-@@ -321,6 +323,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl
+ for (size_t colorAttachmentIndex = 0; colorAttachmentIndex < colorAttachments.size();
+@@ -347,6 +349,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl
+ clearValues[3] = (clearParams.colorFClearValue.alpha >= 0.5f) ? 1.0f : 0.0f;
+ }
++#if defined(ANGLE_ENABLE_D3D11_1)
if (needScissoredClear)
{
-+#if defined(ANGLE_ENABLE_D3D11_1)
// We shouldn't reach here if deviceContext1 is unavailable.
- ASSERT(deviceContext1);
-
-@@ -331,6 +334,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl
- rect.bottom = clearParams.scissor.y + clearParams.scissor.height;
-
+@@ -361,6 +364,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl
deviceContext1->ClearView(framebufferRTV, clearValues, &rect, 1);
-+#endif
}
else
++#endif
{
+ deviceContext->ClearRenderTargetView(framebufferRTV, clearValues);
+ }
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
-index fcca904..f1fe2bb 100644
+index 2e42859..1c35ab4 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
@@ -27,7 +27,9 @@ DebugAnnotator11::~DebugAnnotator11()
@@ -167,47 +134,49 @@ index fcca904..f1fe2bb 100644
#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
FreeLibrary(mD3d11Module);
-@@ -39,21 +41,27 @@ void DebugAnnotator11::beginEvent(const std::wstring &eventName)
- {
- initializeDevice();
+@@ -41,7 +43,9 @@ void DebugAnnotator11::beginEvent(const wchar_t *eventName)
+ if (mUserDefinedAnnotation != nullptr)
+ {
+#if defined(ANGLE_ENABLE_D3D11_1)
- mUserDefinedAnnotation->BeginEvent(eventName.c_str());
+ mUserDefinedAnnotation->BeginEvent(eventName);
+#endif
+ }
}
- void DebugAnnotator11::endEvent()
- {
- initializeDevice();
+@@ -51,7 +55,9 @@ void DebugAnnotator11::endEvent()
+ if (mUserDefinedAnnotation != nullptr)
+ {
+#if defined(ANGLE_ENABLE_D3D11_1)
- mUserDefinedAnnotation->EndEvent();
+ mUserDefinedAnnotation->EndEvent();
+#endif
+ }
}
- void DebugAnnotator11::setMarker(const std::wstring &markerName)
- {
- initializeDevice();
+@@ -61,7 +67,9 @@ void DebugAnnotator11::setMarker(const wchar_t *markerName)
+ if (mUserDefinedAnnotation != nullptr)
+ {
+#if defined(ANGLE_ENABLE_D3D11_1)
- mUserDefinedAnnotation->SetMarker(markerName.c_str());
+ mUserDefinedAnnotation->SetMarker(markerName);
+#endif
+ }
}
- bool DebugAnnotator11::getStatus()
-@@ -96,8 +104,10 @@ void DebugAnnotator11::initializeDevice()
- hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_NULL, nullptr, 0, nullptr, 0, D3D11_SDK_VERSION, &device, nullptr, &context);
+@@ -137,8 +145,10 @@ void DebugAnnotator11::initializeDevice()
ASSERT(SUCCEEDED(hr));
-
+ if (SUCCEEDED(hr))
+ {
+#if defined(ANGLE_ENABLE_D3D11_1)
- mUserDefinedAnnotation = d3d11::DynamicCastComObject<ID3DUserDefinedAnnotation>(context);
- ASSERT(mUserDefinedAnnotation != nullptr);
+ mUserDefinedAnnotation = d3d11::DynamicCastComObject<ID3DUserDefinedAnnotation>(context);
+ ASSERT(mUserDefinedAnnotation != nullptr);
+#endif
+ mInitialized = true;
+ }
- SafeRelease(device);
- SafeRelease(context);
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h
-index 0638364..3df62b0 100644
+index 9da4fa2..d1a0f7f 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h
@@ -11,6 +11,8 @@
@@ -219,11 +188,32 @@ index 0638364..3df62b0 100644
namespace rx
{
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
+index beffa30..186a035 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
+@@ -140,6 +140,7 @@ gl::Error Framebuffer11::discard(size_t count, const GLenum *attachments)
+
+ gl::Error Framebuffer11::invalidateBase(size_t count, const GLenum *attachments, bool useEXTBehavior) const
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ ID3D11DeviceContext1 *deviceContext1 = mRenderer->getDeviceContext1IfSupported();
+
+ if (!deviceContext1)
+@@ -272,6 +273,7 @@ gl::Error Framebuffer11::invalidateBase(size_t count, const GLenum *attachments,
+ deviceContext1->DiscardView(stencilView);
+ }
+ }
++#endif // ANGLE_ENABLE_D3D11_1
+
+ return gl::Error(GL_NO_ERROR);
+ }
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
-index e010190..4979ff5 100644
+index c015ff4..c0bed2b 100644
+index c015ff4..972c289 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
-@@ -13,6 +13,13 @@
+@@ -13,6 +13,20 @@
#include <GLES2/gl2ext.h>
@@ -232,187 +222,170 @@ index e010190..4979ff5 100644
+ UINT64 NumPrimitivesWritten;
+ UINT64 PrimitivesStorageNeeded;
+} D3D11_QUERY_DATA_SO_STATISTICS;
-+#endif
++#endif // ANGLE_MINGW32_COMPAT
++
++#ifdef __MINGW32__
++typedef struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT {
++ UINT64 Frequency;
++ BOOL Disjoint;
++} D3D11_QUERY_DATA_TIMESTAMP_DISJOINT;
++#endif // MINGW32
+
namespace rx
{
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-index dbed23f..5291a3a 100644
+index ea84783..62badcc 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-@@ -62,6 +62,67 @@
- #define ANGLE_SUPPRESS_D3D11_HAZARD_WARNINGS 1
+@@ -10,7 +10,7 @@
+
+ #include <EGL/eglext.h>
+ #include <sstream>
+-#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
++#if !defined(ANGLE_MINGW32_COMPAT) && WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
+ #include <VersionHelpers.h>
#endif
-+#ifndef __d3d11sdklayers_h__
-+#define D3D11_MESSAGE_CATEGORY UINT
-+#define D3D11_MESSAGE_SEVERITY UINT
-+#define D3D11_MESSAGE_ID UINT
-+struct D3D11_MESSAGE;
-+typedef struct D3D11_INFO_QUEUE_FILTER_DESC
-+{
-+ UINT NumCategories;
-+ D3D11_MESSAGE_CATEGORY *pCategoryList;
-+ UINT NumSeverities;
-+ D3D11_MESSAGE_SEVERITY *pSeverityList;
-+ UINT NumIDs;
-+ D3D11_MESSAGE_ID *pIDList;
-+} D3D11_INFO_QUEUE_FILTER_DESC;
-+typedef struct D3D11_INFO_QUEUE_FILTER
-+{
-+ D3D11_INFO_QUEUE_FILTER_DESC AllowList;
-+ D3D11_INFO_QUEUE_FILTER_DESC DenyList;
-+} D3D11_INFO_QUEUE_FILTER;
-+static const IID IID_ID3D11InfoQueue = { 0x6543dbb6, 0x1b48, 0x42f5, 0xab, 0x82, 0xe9, 0x7e, 0xc7, 0x43, 0x26, 0xf6 };
-+MIDL_INTERFACE("6543dbb6-1b48-42f5-ab82-e97ec74326f6") ID3D11InfoQueue : public IUnknown
-+{
-+public:
-+ virtual HRESULT __stdcall SetMessageCountLimit(UINT64) = 0;
-+ virtual void __stdcall ClearStoredMessages() = 0;
-+ virtual HRESULT __stdcall GetMessage(UINT64, D3D11_MESSAGE *, SIZE_T *) = 0;
-+ virtual UINT64 __stdcall GetNumMessagesAllowedByStorageFilter() = 0;
-+ virtual UINT64 __stdcall GetNumMessagesDeniedByStorageFilter() = 0;
-+ virtual UINT64 __stdcall GetNumStoredMessages() = 0;
-+ virtual UINT64 __stdcall GetNumStoredMessagesAllowedByRetrievalFilter() = 0;
-+ virtual UINT64 __stdcall GetNumMessagesDiscardedByMessageCountLimit() = 0;
-+ virtual UINT64 __stdcall GetMessageCountLimit() = 0;
-+ virtual HRESULT __stdcall AddStorageFilterEntries(D3D11_INFO_QUEUE_FILTER *) = 0;
-+ virtual HRESULT __stdcall GetStorageFilter(D3D11_INFO_QUEUE_FILTER *, SIZE_T *) = 0;
-+ virtual void __stdcall ClearStorageFilter() = 0;
-+ virtual HRESULT __stdcall PushEmptyStorageFilter() = 0;
-+ virtual HRESULT __stdcall PushCopyOfStorageFilter() = 0;
-+ virtual HRESULT __stdcall PushStorageFilter(D3D11_INFO_QUEUE_FILTER *) = 0;
-+ virtual void __stdcall PopStorageFilter() = 0;
-+ virtual UINT __stdcall GetStorageFilterStackSize() = 0;
-+ virtual HRESULT __stdcall AddRetrievalFilterEntries(D3D11_INFO_QUEUE_FILTER *) = 0;
-+ virtual HRESULT __stdcall GetRetrievalFilter(D3D11_INFO_QUEUE_FILTER *, SIZE_T *) = 0;
-+ virtual void __stdcall ClearRetrievalFilter() = 0;
-+ virtual HRESULT __stdcall PushEmptyRetrievalFilter() = 0;
-+ virtual HRESULT __stdcall PushCopyOfRetrievalFilter() = 0;
-+ virtual HRESULT __stdcall PushRetrievalFilter(D3D11_INFO_QUEUE_FILTER *) = 0;
-+ virtual void __stdcall PopRetrievalFilter() = 0;
-+ virtual UINT __stdcall GetRetrievalFilterStackSize() = 0;
-+ virtual HRESULT __stdcall AddMessage(D3D11_MESSAGE_CATEGORY, D3D11_MESSAGE_SEVERITY, D3D11_MESSAGE_ID, LPCSTR) = 0;
-+ virtual HRESULT __stdcall AddApplicationMessage(D3D11_MESSAGE_SEVERITY, LPCSTR) = 0;
-+ virtual HRESULT __stdcall SetBreakOnCategory(D3D11_MESSAGE_CATEGORY, BOOL) = 0;
-+ virtual HRESULT __stdcall SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY, BOOL) = 0;
-+ virtual HRESULT __stdcall SetBreakOnID(D3D11_MESSAGE_ID, BOOL) = 0;
-+ virtual BOOL __stdcall GetBreakOnCategory(D3D11_MESSAGE_CATEGORY) = 0;
-+ virtual BOOL __stdcall GetBreakOnSeverity(D3D11_MESSAGE_SEVERITY) = 0;
-+ virtual BOOL __stdcall GetBreakOnID(D3D11_MESSAGE_ID) = 0;
-+ virtual void __stdcall SetMuteDebugOutput(BOOL) = 0;
-+ virtual BOOL __stdcall GetMuteDebugOutput() = 0;
-+};
-+#endif
-+
- namespace rx
- {
+@@ -89,6 +89,7 @@ enum
+ MAX_TEXTURE_IMAGE_UNITS_VTF_SM4 = 16
+ };
-@@ -164,8 +225,7 @@ void CalculateConstantBufferParams(GLintptr offset, GLsizeiptr size, UINT *outFi
++#if defined(ANGLE_ENABLE_D3D11_1)
+ void CalculateConstantBufferParams(GLintptr offset, GLsizeiptr size, UINT *outFirstConstant, UINT *outNumConstants)
+ {
+ // The offset must be aligned to 256 bytes (should have been enforced by glBindBufferRange).
+@@ -105,6 +106,7 @@ void CalculateConstantBufferParams(GLintptr offset, GLsizeiptr size, UINT *outFi
+ // This behaviour is explictly allowed according to the documentation on ID3D11DeviceContext1::PSSetConstantBuffers1
+ // https://msdn.microsoft.com/en-us/library/windows/desktop/hh404649%28v=vs.85%29.aspx
+ }
++#endif
- Renderer11::Renderer11(egl::Display *display)
+ enum ANGLEFeatureLevel
+ {
+@@ -369,8 +371,10 @@ Renderer11::Renderer11(egl::Display *display)
: RendererD3D(display),
-- mStateCache(this),
+ mStateCache(this),
+ mStateManager(this),
+- mLastHistogramUpdateTime(ANGLEPlatformCurrent()->monotonicallyIncreasingTime()),
- mDebug(nullptr)
-+ mStateCache(this)
++ mLastHistogramUpdateTime(ANGLEPlatformCurrent()->monotonicallyIncreasingTime())
++#if !defined(ANGLE_MINGW32_COMPAT)
++ ,mDebug(nullptr)
++#endif
{
- // Initialize global annotator
- gl::InitializeDebugAnnotations(&mAnnotator);
-@@ -398,7 +458,9 @@ egl::Error Renderer11::initialize()
- // Cast the DeviceContext to a DeviceContext1.
- // This could fail on Windows 7 without the Platform Update.
- // Don't error in this case- just don't use mDeviceContext1.
+ mVertexDataManager = NULL;
+ mIndexDataManager = NULL;
+@@ -572,7 +576,9 @@ egl::Error Renderer11::initialize()
+ // Cast the DeviceContext to a DeviceContext1.
+ // This could fail on Windows 7 without the Platform Update.
+ // Don't error in this case- just don't use mDeviceContext1.
+#if defined(ANGLE_ENABLE_D3D11_1)
- mDeviceContext1 = d3d11::DynamicCastComObject<ID3D11DeviceContext1>(mDeviceContext);
+ mDeviceContext1 = d3d11::DynamicCastComObject<ID3D11DeviceContext1>(mDeviceContext);
+#endif
- IDXGIDevice *dxgiDevice = NULL;
- result = mDevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice);
-@@ -421,6 +483,7 @@ egl::Error Renderer11::initialize()
+ IDXGIDevice *dxgiDevice = NULL;
+ result = mDevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice);
+@@ -595,6 +601,7 @@ egl::Error Renderer11::initialize()
- SafeRelease(dxgiDevice);
+ SafeRelease(dxgiDevice);
+#if defined(ANGLE_ENABLE_D3D11_1)
- IDXGIAdapter2 *dxgiAdapter2 = d3d11::DynamicCastComObject<IDXGIAdapter2>(mDxgiAdapter);
+ IDXGIAdapter2 *dxgiAdapter2 = d3d11::DynamicCastComObject<IDXGIAdapter2>(mDxgiAdapter);
- // On D3D_FEATURE_LEVEL_9_*, IDXGIAdapter::GetDesc returns "Software Adapter" for the description string.
-@@ -447,6 +510,7 @@ egl::Error Renderer11::initialize()
- }
+ // On D3D_FEATURE_LEVEL_9_*, IDXGIAdapter::GetDesc returns "Software Adapter" for the description string.
+@@ -618,11 +625,14 @@ egl::Error Renderer11::initialize()
+ }
+ }
+ else
++#endif
+ {
+ result = mDxgiAdapter->GetDesc(&mAdapterDescription);
+ }
- SafeRelease(dxgiAdapter2);
++#if defined(ANGLE_ENABLE_D3D11_1)
+ SafeRelease(dxgiAdapter2);
+#endif
- memset(mDescription, 0, sizeof(mDescription));
- wcstombs(mDescription, mAdapterDescription.Description, sizeof(mDescription) - 1);
-@@ -463,7 +527,7 @@ egl::Error Renderer11::initialize()
+ if (FAILED(result))
+ {
+@@ -644,6 +654,7 @@ egl::Error Renderer11::initialize()
+ }
+ }
+
++#if !defined(ANGLE_MINGW32_COMPAT)
// Disable some spurious D3D11 debug warnings to prevent them from flooding the output log
#if defined(ANGLE_SUPPRESS_D3D11_HAZARD_WARNINGS) && defined(_DEBUG)
- ID3D11InfoQueue *infoQueue;
-- result = mDevice->QueryInterface(__uuidof(ID3D11InfoQueue), (void **)&infoQueue);
-+ result = mDevice->QueryInterface(IID_ID3D11InfoQueue, (void **)&infoQueue);
-
- if (SUCCEEDED(result))
{
-@@ -481,10 +545,6 @@ egl::Error Renderer11::initialize()
- }
+@@ -671,6 +682,7 @@ egl::Error Renderer11::initialize()
+ #if !defined(NDEBUG)
+ mDebug = d3d11::DynamicCastComObject<ID3D11Debug>(mDevice);
#endif
++#endif // !ANGLE_MINGW32_COMPAT
--#if !defined(NDEBUG)
-- mDebug = d3d11::DynamicCastComObject<ID3D11Debug>(mDevice);
--#endif
--
initializeDevice();
- return egl::Error(EGL_SUCCESS);
-@@ -525,12 +585,14 @@ void Renderer11::initializeDevice()
-
- const gl::Caps &rendererCaps = getRendererCaps();
+@@ -859,6 +871,7 @@ void Renderer11::populateRenderer11DeviceCaps()
+ {
+ HRESULT hr = S_OK;
+#if defined(ANGLE_ENABLE_D3D11_1)
- if (getDeviceContext1IfSupported())
+ if (mDeviceContext1)
{
D3D11_FEATURE_DATA_D3D11_OPTIONS d3d11Options;
- mDevice->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS, &d3d11Options, sizeof(D3D11_FEATURE_DATA_D3D11_OPTIONS));
- mSupportsConstantBufferOffsets = (d3d11Options.ConstantBufferOffsetting != FALSE);
+@@ -869,6 +882,7 @@ void Renderer11::populateRenderer11DeviceCaps()
+ mRenderer11DeviceCaps.supportsConstantBufferOffsets = (d3d11Options.ConstantBufferOffsetting != FALSE);
+ }
}
+#endif
- mForceSetVertexSamplerStates.resize(rendererCaps.maxVertexTextureImageUnits);
- mCurVertexSamplerStates.resize(rendererCaps.maxVertexTextureImageUnits);
-@@ -853,6 +915,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
+ hr = mDevice->CheckFormatSupport(DXGI_FORMAT_B5G6R5_UNORM, &(mRenderer11DeviceCaps.B5G6R5support));
+ if (FAILED(hr))
+@@ -888,9 +902,11 @@ void Renderer11::populateRenderer11DeviceCaps()
+ mRenderer11DeviceCaps.B5G5R5A1support = 0;
+ }
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ IDXGIAdapter2 *dxgiAdapter2 = d3d11::DynamicCastComObject<IDXGIAdapter2>(mDxgiAdapter);
+ mRenderer11DeviceCaps.supportsDXGI1_2 = (dxgiAdapter2 != nullptr);
+ SafeRelease(dxgiAdapter2);
++#endif
+ }
+
+ egl::ConfigSet Renderer11::generateConfigs() const
+@@ -1308,6 +1324,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
mCurrentConstantBufferVSOffset[uniformBufferIndex] != uniformBufferOffset ||
mCurrentConstantBufferVSSize[uniformBufferIndex] != uniformBufferSize)
{
+#if defined(ANGLE_ENABLE_D3D11_1)
- if (mSupportsConstantBufferOffsets && uniformBufferSize != 0)
+ if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0)
{
UINT firstConstant = 0, numConstants = 0;
-@@ -861,6 +924,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
- 1, &constantBuffer, &firstConstant, &numConstants);
+@@ -1318,6 +1335,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
+ 1, &constantBuffer, &firstConstant, &numConstants);
}
else
+#endif
{
- ASSERT(uniformBufferOffset == 0);
- mDeviceContext->VSSetConstantBuffers(getReservedVertexUniformBuffers() + uniformBufferIndex,
-@@ -901,6 +965,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
+ mDeviceContext->VSSetConstantBuffers(
+ getReservedVertexUniformBuffers() +
+@@ -1369,6 +1387,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
mCurrentConstantBufferPSOffset[uniformBufferIndex] != uniformBufferOffset ||
mCurrentConstantBufferPSSize[uniformBufferIndex] != uniformBufferSize)
{
+#if defined(ANGLE_ENABLE_D3D11_1)
- if (mSupportsConstantBufferOffsets && uniformBufferSize != 0)
+ if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0)
{
UINT firstConstant = 0, numConstants = 0;
-@@ -909,6 +974,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
- 1, &constantBuffer, &firstConstant, &numConstants);
+@@ -1379,6 +1398,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
+ 1, &constantBuffer, &firstConstant, &numConstants);
}
else
+#endif
{
- ASSERT(uniformBufferOffset == 0);
- mDeviceContext->PSSetConstantBuffers(getReservedFragmentUniformBuffers() + uniformBufferIndex,
-@@ -2194,7 +2260,9 @@ void Renderer11::release()
+ mDeviceContext->PSSetConstantBuffers(
+ getReservedFragmentUniformBuffers() +
+@@ -2448,7 +2468,9 @@ void Renderer11::release()
SafeRelease(mDxgiFactory);
SafeRelease(mDxgiAdapter);
@@ -422,42 +395,129 @@ index dbed23f..5291a3a 100644
if (mDeviceContext)
{
-@@ -2204,7 +2272,6 @@ void Renderer11::release()
+@@ -2458,7 +2480,9 @@ void Renderer11::release()
}
SafeRelease(mDevice);
-- SafeRelease(mDebug);
++#if !defined(ANGLE_MINGW32_COMPAT)
+ SafeRelease(mDebug);
++#endif
if (mD3d11Module)
{
+@@ -2618,7 +2642,7 @@ bool Renderer11::getShareHandleSupport() const
+
+ if (deviceType == d3d11::ANGLE_D3D11_DEVICE_TYPE_WARP)
+ {
+-#ifndef ANGLE_ENABLE_WINDOWS_STORE
++#if !defined(ANGLE_ENABLE_WINDOWS_STORE) && !defined(__GNUC__)
+ if (!IsWindows8OrGreater())
+ {
+ // WARP on Windows 7 doesn't support shared handles
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
-index d1fec55..cc7d6c2 100644
+index 62e9816..b4e7761 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
-@@ -20,6 +20,8 @@
- #include "libANGLE/renderer/d3d/d3d11/InputLayoutCache.h"
- #include "libANGLE/renderer/d3d/d3d11/RenderStateCache.h"
+@@ -28,6 +28,8 @@ class FramebufferAttachment;
+ struct ImageIndex;
+ }
+struct ID3D11DeviceContext1;
+
- namespace gl
+ namespace rx
{
- class FramebufferAttachment;
-@@ -390,7 +392,6 @@ class Renderer11 : public RendererD3D
+
+@@ -442,7 +444,9 @@ class Renderer11 : public RendererD3D
DXGI_ADAPTER_DESC mAdapterDescription;
char mDescription[128];
DXGIFactory *mDxgiFactory;
-- ID3D11Debug *mDebug;
++#if !defined(ANGLE_MINGW32_COMPAT)
+ ID3D11Debug *mDebug;
++#endif
- DebugAnnotator11 mAnnotator;
- };
+ std::vector<GLuint> mScratchIndexDataBuffer;
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+index f669f56..f80f24b 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+@@ -58,7 +58,9 @@ SwapChain11::SwapChain11(Renderer11 *renderer,
+ mPassThroughResourcesInit(false),
+ mFirstSwap(true),
+ mSwapChain(nullptr),
++#if defined(ANGLE_ENABLE_D3D11_1)
+ mSwapChain1(nullptr),
++#endif
+ mKeyedMutex(nullptr),
+ mBackBufferTexture(nullptr),
+ mBackBufferRTView(nullptr),
+@@ -90,7 +92,9 @@ SwapChain11::~SwapChain11()
+
+ void SwapChain11::release()
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ SafeRelease(mSwapChain1);
++#endif
+ SafeRelease(mSwapChain);
+ SafeRelease(mKeyedMutex);
+ SafeRelease(mBackBufferTexture);
+@@ -533,7 +537,9 @@ EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swap
+
+ // Release specific resources to free up memory for the new render target, while the
+ // old render target still exists for the purpose of preserving its contents.
++#if defined(ANGLE_ENABLE_D3D11_1)
+ SafeRelease(mSwapChain1);
++#endif
+ SafeRelease(mSwapChain);
+ SafeRelease(mBackBufferTexture);
+ SafeRelease(mBackBufferRTView);
+@@ -568,7 +574,9 @@ EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swap
+
+ if (mRenderer->getRenderer11DeviceCaps().supportsDXGI1_2)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ mSwapChain1 = d3d11::DynamicCastComObject<IDXGISwapChain1>(mSwapChain);
++#endif
+ }
+
+ result = mSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&mBackBufferTexture);
+@@ -837,6 +845,7 @@ EGLint SwapChain11::present(EGLint x, EGLint y, EGLint width, EGLint height)
+
+ HRESULT result = S_OK;
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ // Use IDXGISwapChain1::Present1 with a dirty rect if DXGI 1.2 is available.
+ if (mSwapChain1 != nullptr)
+ {
+@@ -855,6 +864,7 @@ EGLint SwapChain11::present(EGLint x, EGLint y, EGLint width, EGLint height)
+ }
+ }
+ else
++#endif
+ {
+ result = mSwapChain->Present(swapInterval, 0);
+ }
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
+index 99198c6..adcd07a 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
+@@ -75,7 +75,9 @@ class SwapChain11 : public SwapChainD3D
+
+ bool mFirstSwap;
+ DXGISwapChain *mSwapChain;
++#if defined(ANGLE_ENABLE_D3D11_1)
+ IDXGISwapChain1 *mSwapChain1;
++#endif
+ IDXGIKeyedMutex *mKeyedMutex;
+
+ ID3D11Texture2D *mBackBufferTexture;
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
-index 70b2b79..63085f4 100644
+index d1f3ea0..a1175db 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
-@@ -20,6 +20,88 @@
-
- #include <algorithm>
+@@ -23,6 +23,88 @@
+ #include "libANGLE/renderer/d3d/FramebufferD3D.h"
+ #include "libANGLE/renderer/d3d/WorkaroundsD3D.h"
+#ifndef D3D_FL9_1_DEFAULT_MAX_ANISOTROPY
+# define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
@@ -544,127 +604,7 @@ index 70b2b79..63085f4 100644
namespace rx
{
-@@ -232,7 +314,9 @@ GLint GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return 3;
-@@ -298,7 +382,9 @@ static bool GetNPOTTextureSupport(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return true;
-@@ -316,7 +402,9 @@ static float GetMaximumAnisotropy(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_MAX_MAXANISOTROPY;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -336,7 +424,9 @@ static bool GetOcclusionQuerySupport(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return true;
-@@ -356,7 +446,9 @@ static bool GetEventQuerySupport(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0:
-@@ -374,7 +466,9 @@ static bool GetInstancingSupport(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return true;
-@@ -397,7 +491,9 @@ static bool GetFramebufferMultisampleSupport(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return true;
-@@ -414,7 +510,9 @@ static bool GetFramebufferBlitSupport(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return true;
-@@ -437,7 +535,9 @@ static bool GetDerivativeInstructionSupport(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0:
-@@ -453,7 +553,9 @@ static bool GetShaderTextureLODSupport(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return true;
-@@ -472,7 +574,9 @@ static size_t GetMaximumSimultaneousRenderTargets(D3D_FEATURE_LEVEL featureLevel
-
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -490,7 +594,9 @@ static size_t GetMaximum2DTextureSize(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -508,7 +614,9 @@ static size_t GetMaximumCubeMapTextureSize(D3D_FEATURE_LEVEL featureLevel)
+@@ -601,7 +683,9 @@ static size_t GetMaximumCubeMapTextureSize(D3D_FEATURE_LEVEL featureLevel)
{
switch (featureLevel)
{
@@ -674,7 +614,7 @@ index 70b2b79..63085f4 100644
case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURECUBE_DIMENSION;
case D3D_FEATURE_LEVEL_10_1:
-@@ -526,7 +634,9 @@ static size_t GetMaximum2DTextureArraySize(D3D_FEATURE_LEVEL featureLevel)
+@@ -619,7 +703,9 @@ static size_t GetMaximum2DTextureArraySize(D3D_FEATURE_LEVEL featureLevel)
{
switch (featureLevel)
{
@@ -684,244 +624,278 @@ index 70b2b79..63085f4 100644
case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION;
case D3D_FEATURE_LEVEL_10_1:
-@@ -544,7 +654,9 @@ static size_t GetMaximum3DTextureSize(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -562,7 +674,9 @@ static size_t GetMaximumViewportSize(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_VIEWPORT_BOUNDS_MAX;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -586,7 +700,9 @@ static size_t GetMaximumDrawIndexedIndexCount(D3D_FEATURE_LEVEL featureLevel)
+@@ -1266,7 +1352,9 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device)
- switch (featureLevel)
- {
+ IDXGIDevice *dxgiDevice = nullptr;
+ IDXGIAdapter *dxgiAdapter = nullptr;
+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
+ IDXGIAdapter2 *dxgiAdapter2 = nullptr;
+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return std::numeric_limits<GLint>::max();
-@@ -608,7 +724,9 @@ static size_t GetMaximumDrawVertexCount(D3D_FEATURE_LEVEL featureLevel)
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return std::numeric_limits<GLint>::max();
-@@ -625,7 +743,9 @@ static size_t GetMaximumVertexInputSlots(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_STANDARD_VERTEX_ELEMENT_COUNT;
+ ANGLED3D11DeviceType retDeviceType = ANGLE_D3D11_DEVICE_TYPE_UNKNOWN;
- case D3D_FEATURE_LEVEL_10_1: return D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT;
-@@ -645,7 +765,9 @@ static size_t GetMaximumVertexUniformVectors(D3D_FEATURE_LEVEL featureLevel)
- // TODO(geofflang): Remove hard-coded limit once the gl-uniform-arrays test can pass
- switch (featureLevel)
- {
+@@ -1277,6 +1365,7 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device)
+ if (SUCCEEDED(hr))
+ {
+ std::wstring adapterString;
+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return 1024; // D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -670,7 +792,9 @@ static size_t GetMaximumVertexUniformBlocks(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - GetReservedVertexUniformBuffers();
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -698,7 +822,9 @@ static size_t GetReservedVertexOutputVectors(D3D_FEATURE_LEVEL featureLevel)
- // We must reserve one output vector for dx_Position.
- // We also reserve one for gl_Position, which we unconditionally output on Feature Levels 10_0+,
- // even if it's unused in the shader (e.g. for transform feedback). TODO: This could be improved.
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return 2;
-@@ -720,7 +846,9 @@ static size_t GetMaximumVertexOutputVectors(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
+ HRESULT adapter2hr =
+ dxgiAdapter->QueryInterface(__uuidof(dxgiAdapter2), (void **)&dxgiAdapter2);
+ if (SUCCEEDED(adapter2hr))
+@@ -1289,6 +1378,7 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device)
+ adapterString = std::wstring(adapterDesc2.Description);
+ }
+ else
+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_VS_OUTPUT_REGISTER_COUNT - GetReservedVertexOutputVectors(featureLevel);
-
- case D3D_FEATURE_LEVEL_10_1: return D3D10_1_VS_OUTPUT_REGISTER_COUNT - GetReservedVertexOutputVectors(featureLevel);
-@@ -739,7 +867,9 @@ static size_t GetMaximumVertexTextureUnits(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT;
+ {
+ DXGI_ADAPTER_DESC adapterDesc;
+ dxgiAdapter->GetDesc(&adapterDesc);
+@@ -1320,7 +1410,9 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device)
- case D3D_FEATURE_LEVEL_10_1:
-@@ -761,7 +891,9 @@ static size_t GetMaximumPixelUniformVectors(D3D_FEATURE_LEVEL featureLevel)
- // TODO(geofflang): Remove hard-coded limit once the gl-uniform-arrays test can pass
- switch (featureLevel)
- {
+ SafeRelease(dxgiDevice);
+ SafeRelease(dxgiAdapter);
+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
+ SafeRelease(dxgiAdapter2);
+#endif
- case D3D_FEATURE_LEVEL_11_0: return 1024; // D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT;
- case D3D_FEATURE_LEVEL_10_1:
-@@ -786,7 +918,9 @@ static size_t GetMaximumPixelUniformBlocks(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - GetReservedPixelUniformBuffers();
+ return retDeviceType;
+ }
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
+index 123b481..cd63789 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
+@@ -12,7 +12,9 @@
+ #include "common/debug.h"
- case D3D_FEATURE_LEVEL_10_1:
-@@ -805,7 +939,9 @@ static size_t GetMaximumPixelInputVectors(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
+ #include <initguid.h>
++#if !defined(__MINGW32__)
+ #include <dcomp.h>
+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_PS_INPUT_REGISTER_COUNT - GetReservedVertexOutputVectors(featureLevel);
- case D3D_FEATURE_LEVEL_10_1:
-@@ -824,7 +960,9 @@ static size_t GetMaximumPixelTextureUnits(D3D_FEATURE_LEVEL featureLevel)
+ namespace rx
{
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT;
+@@ -31,9 +33,11 @@ NativeWindow::NativeWindow(EGLNativeWindowType window,
- case D3D_FEATURE_LEVEL_10_1:
-@@ -843,7 +981,9 @@ static int GetMinimumTexelOffset(D3D_FEATURE_LEVEL featureLevel)
+ NativeWindow::~NativeWindow()
{
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -862,7 +1002,9 @@ static int GetMaximumTexelOffset(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
++#if !defined(__MINGW32__)
+ SafeRelease(mCompositionTarget);
+ SafeRelease(mDevice);
+ SafeRelease(mVisual);
+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE;
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE;
-@@ -885,7 +1027,9 @@ static size_t GetMaximumConstantBufferSize(D3D_FEATURE_LEVEL featureLevel)
+ }
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT * bytesPerComponent;
+ bool NativeWindow::initialize()
+@@ -66,6 +70,7 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory
+ return E_INVALIDARG;
+ }
- case D3D_FEATURE_LEVEL_10_1:
-@@ -904,7 +1048,9 @@ static size_t GetMaximumStreamOutputBuffers(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
++#if !defined(__MINGW32__)
+ if (mDirectComposition)
{
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_SO_BUFFER_SLOT_COUNT;
+ HMODULE dcomp = ::GetModuleHandle(TEXT("dcomp.dll"));
+@@ -171,6 +176,7 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory
+ SafeRelease(factory2);
+ return result;
+ }
++#endif // !__MINGW32__
- case D3D_FEATURE_LEVEL_10_1: return D3D10_1_SO_BUFFER_SLOT_COUNT;
-@@ -922,7 +1068,9 @@ static size_t GetMaximumStreamOutputInterleavedComponents(D3D_FEATURE_LEVEL feat
- {
- switch (featureLevel)
- {
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
+ DXGI_SWAP_CHAIN_DESC swapChainDesc = {};
+ swapChainDesc.BufferCount = 1;
+@@ -202,9 +208,11 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory
- case D3D_FEATURE_LEVEL_10_1:
-@@ -940,7 +1088,9 @@ static size_t GetMaximumStreamOutputSeparateComponents(D3D_FEATURE_LEVEL feature
+ void NativeWindow::commitChange()
{
- switch (featureLevel)
++#if !defined(__MINGW32__)
+ if (mDevice)
{
-+#if defined(ANGLE_ENABLE_D3D11_1)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return GetMaximumStreamOutputInterleavedComponents(featureLevel) /
- GetMaximumStreamOutputBuffers(featureLevel);
-
-@@ -1054,6 +1204,7 @@ void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, gl::
-
- // Setting a large alignment forces uniform buffers to bind with zero offset
- caps->uniformBufferOffsetAlignment = static_cast<GLuint>(std::numeric_limits<GLint>::max());
-+#if defined(ANGLE_ENABLE_D3D11_1)
- ID3D11DeviceContext1 *deviceContext1 = d3d11::DynamicCastComObject<ID3D11DeviceContext1>(deviceContext);
-
- if (deviceContext1)
-@@ -1070,6 +1221,7 @@ void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, gl::
-
- SafeRelease(deviceContext1);
+ mDevice->Commit();
}
+#endif
-
- caps->maxCombinedUniformBlocks = caps->maxVertexUniformBlocks + caps->maxFragmentUniformBlocks;
- caps->maxCombinedVertexUniformComponents = (static_cast<GLint64>(caps->maxVertexUniformBlocks) * static_cast<GLint64>(caps->maxUniformBlockSize / 4)) +
+ }
+ }
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
-index c59808d..bf1c367 100644
+index cba74c1..6bb975b 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
-@@ -206,7 +206,7 @@ egl::Error Renderer9::initialize()
+@@ -193,7 +193,7 @@ egl::Error Renderer9::initialize()
{
- TRACE_EVENT0("gpu", "D3d9Ex_QueryInterface");
+ TRACE_EVENT0("gpu.angle", "D3d9Ex_QueryInterface");
ASSERT(mD3d9Ex);
- mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast<void**>(&mD3d9));
+ mD3d9Ex->QueryInterface(IID_IDirect3D9, reinterpret_cast<void**>(&mD3d9));
ASSERT(mD3d9);
}
else
-@@ -314,7 +314,7 @@ egl::Error Renderer9::initialize()
+@@ -301,7 +301,7 @@ egl::Error Renderer9::initialize()
if (mD3d9Ex)
{
- TRACE_EVENT0("gpu", "mDevice_QueryInterface");
+ TRACE_EVENT0("gpu.angle", "mDevice_QueryInterface");
- result = mDevice->QueryInterface(__uuidof(IDirect3DDevice9Ex), (void**)&mDeviceEx);
+ result = mDevice->QueryInterface(IID_IDirect3DDevice9Ex, (void**)&mDeviceEx);
ASSERT(SUCCEEDED(result));
}
+diff --git a/src/3rdparty/angle/src/libEGL/libEGL_mingw32.def b/src/3rdparty/angle/src/libEGL/libEGL_mingw32.def
+index 6a771a5..c8f941a 100644
+--- a/src/3rdparty/angle/src/libEGL/libEGL_mingw32.def
++++ b/src/3rdparty/angle/src/libEGL/libEGL_mingw32.def
+@@ -39,15 +39,22 @@ EXPORTS
+ eglGetPlatformDisplayEXT@12 @35
+ eglQuerySurfacePointerANGLE@16 @36
+ eglPostSubBufferNV@24 @37
++ eglQueryDisplayAttribEXT@12 @48
++ eglQueryDeviceAttribEXT@12 @49
++ eglQueryDeviceStringEXT@8 @50
++ eglCreateImageKHR@20 @51
++ eglDestroyImageKHR@8 @52
++ eglCreateDeviceANGLE@12 @53
++ eglReleaseDeviceANGLE@4 @54
+
+ ; 1.5 entry points
+- eglCreateSync @38
+- eglDestroySync @39
+- eglClientWaitSync @40
+- eglGetSyncAttrib @41
+- eglCreateImage @42
+- eglDestroyImage @43
+- eglGetPlatformDisplay @44
+- eglCreatePlatformWindowSurface @45
+- eglCreatePlatformPixmapSurface @46
+- eglWaitSync @47
++ eglCreateSync@12 @38
++ eglDestroySync@8 @39
++ eglClientWaitSync@16 @40
++ eglGetSyncAttrib@16 @41
++ eglCreateImage@20 @42
++ eglDestroyImage@8 @43
++ eglGetPlatformDisplay@12 @44
++ eglCreatePlatformWindowSurface@16 @45
++ eglCreatePlatformPixmapSurface@16 @46
++ eglWaitSync@12 @47
+diff --git a/src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def b/src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def
+index ab0320d..a4a9d95 100644
+--- a/src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def
++++ b/src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def
+@@ -39,3 +39,22 @@ EXPORTS
+ eglGetPlatformDisplayEXT@12 @35
+ eglQuerySurfacePointerANGLE@16 @36
+ eglPostSubBufferNV@24 @37
++ eglQueryDisplayAttribEXT@12 @48
++ eglQueryDeviceAttribEXT@12 @49
++ eglQueryDeviceStringEXT@8 @50
++ eglCreateImageKHR@20 @51
++ eglDestroyImageKHR@8 @52
++ eglCreateDeviceANGLE@12 @53
++ eglReleaseDeviceANGLE@4 @54
++
++ ; 1.5 entry points
++ eglCreateSync@12 @38
++ eglDestroySync@8 @39
++ eglClientWaitSync@16 @40
++ eglGetSyncAttrib@16 @41
++ eglCreateImage@20 @42
++ eglDestroyImage@8 @43
++ eglGetPlatformDisplay@12 @44
++ eglCreatePlatformWindowSurface@16 @45
++ eglCreatePlatformPixmapSurface@16 @46
++ eglWaitSync@12 @47
+diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def b/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def
+index e02b85b..db17bb4 100644
+--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def
++++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def
+@@ -177,6 +177,31 @@ EXPORTS
+ glGetBufferPointervOES@12 @287
+ glMapBufferRangeEXT@16 @288
+ glFlushMappedBufferRangeEXT@12 @289
++ glDiscardFramebufferEXT@12 @293
++ glInsertEventMarkerEXT@8 @294
++ glPushGroupMarkerEXT@8 @295
++ glPopGroupMarkerEXT@0 @296
++ glEGLImageTargetTexture2DOES@8 @297
++ glEGLImageTargetRenderbufferStorageOES@8 @298
++ glBindVertexArrayOES@4 @299
++ glDeleteVertexArraysOES@8 @300
++ glGenVertexArraysOES@8 @301
++ glIsVertexArrayOES@4 @302
++ glDebugMessageControlKHR@24 @303
++ glDebugMessageInsertKHR@24 @304
++ glDebugMessageCallbackKHR@8 @305
++ glGetDebugMessageLogKHR@32 @306
++ glPushDebugGroupKHR@16 @307
++ glPopDebugGroupKHR@0 @308
++ glObjectLabelKHR@16 @309
++ glGetObjectLabelKHR@20 @310
++ glObjectPtrLabelKHR@12 @311
++ glGetObjectPtrLabelKHR@16 @312
++ glGetPointervKHR@8 @313
++ glQueryCounterEXT@8 @314
++ glGetQueryObjectivEXT@12 @315
++ glGetQueryObjecti64vEXT@12 @316
++ glGetQueryObjectui64vEXT@12 @317
+
+ ; GLES 3.0 Functions
+ glReadBuffer@4 @180
+@@ -284,5 +309,8 @@ EXPORTS
+ glTexStorage3D@24 @282
+ glGetInternalformativ@20 @283
+
+- ; Setting up TRACE macro callbacks
+- SetTraceFunctionPointers@8 @284
++ ; ANGLE Platform Implementation
++ ANGLEPlatformCurrent@0 @290
++ ANGLEPlatformInitialize@4 @291
++ ANGLEPlatformShutdown@0 @292
++
+\ No newline at end of file
+diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def b/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def
+index e2b2c33..5a4966f 100644
+--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def
++++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def
+@@ -177,6 +177,31 @@ EXPORTS
+ glGetBufferPointervOES@12 @287
+ glMapBufferRangeEXT@16 @288
+ glFlushMappedBufferRangeEXT@12 @289
++ glDiscardFramebufferEXT@12 @293
++ glInsertEventMarkerEXT@8 @294
++ glPushGroupMarkerEXT@8 @295
++ glPopGroupMarkerEXT@0 @296
++ glEGLImageTargetTexture2DOES@8 @297
++ glEGLImageTargetRenderbufferStorageOES@8 @298
++ glBindVertexArrayOES@4 @299
++ glDeleteVertexArraysOES@8 @300
++ glGenVertexArraysOES@8 @301
++ glIsVertexArrayOES@4 @302
++ glDebugMessageControlKHR@24 @303
++ glDebugMessageInsertKHR@24 @304
++ glDebugMessageCallbackKHR@8 @305
++ glGetDebugMessageLogKHR@32 @306
++ glPushDebugGroupKHR@16 @307
++ glPopDebugGroupKHR@0 @308
++ glObjectLabelKHR@16 @309
++ glGetObjectLabelKHR@20 @310
++ glObjectPtrLabelKHR@12 @311
++ glGetObjectPtrLabelKHR@16 @312
++ glGetPointervKHR@8 @313
++ glQueryCounterEXT@8 @314
++ glGetQueryObjectivEXT@12 @315
++ glGetQueryObjecti64vEXT@12 @316
++ glGetQueryObjectui64vEXT@12 @317
+
+ ; GLES 3.0 Functions
+ glReadBuffer@4 @180
+@@ -284,5 +309,8 @@ EXPORTS
+ glTexStorage3D@24 @282
+ glGetInternalformativ@20 @283
+
+- ; Setting up TRACE macro callbacks
+- SetTraceFunctionPointers@8 @284
++ ; ANGLE Platform Implementation
++ ANGLEPlatformCurrent@0 @290
++ ANGLEPlatformInitialize@4 @291
++ ANGLEPlatformShutdown@0 @292
++
+\ No newline at end of file
--
-2.1.4
+2.7.0.windows.1
diff --git a/src/angle/patches/0005-ANGLE-Add-support-for-querying-platform-device.patch b/src/angle/patches/0003-ANGLE-Add-support-for-querying-platform-device.patch
index 8a5bffebe4..ed0f7247cb 100644
--- a/src/angle/patches/0005-ANGLE-Add-support-for-querying-platform-device.patch
+++ b/src/angle/patches/0003-ANGLE-Add-support-for-querying-platform-device.patch
@@ -1,7 +1,7 @@
-From f6bfeecf2c7d14e9fd2b637e6ce9555489e3a256 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@intopalo.com>
-Date: Fri, 27 Mar 2015 17:58:41 +0200
-Subject: [PATCH 5/5] ANGLE: Add support for querying platform device
+From 037550af14ce0ecebad96d637d7185b60d760b5d Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@theqtcompany.com>
+Date: Tue, 1 Mar 2016 13:31:08 +0100
+Subject: [PATCH 3/7] ANGLE: Add support for querying platform device
The EGL_EXT_device_base extension allows for querying the platform
device of the graphics hardware via eglQueryDisplayAttribEXT().
@@ -14,34 +14,31 @@ argument.
The D3D device is needed for video support in QtMultimedia as well as
the IDXGIDevice3::Trim() calls required by the Windows Store.
-Change-Id: Ibdf228d81d6604e56db9dd8597d7cd2983ebc428
+Change-Id: Ib3dfd3edc47dbcc02b07f71980ba785508f2ee57
---
- src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp | 7 +++++--
+ src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp | 4 ++++
src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h | 1 +
src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 5 +++++
src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h | 2 ++
- 4 files changed, 13 insertions(+), 2 deletions(-)
+ 4 files changed, 12 insertions(+)
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
-index a3c457d..4fde295 100644
+index 93f6990..0347828 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
-@@ -385,8 +385,11 @@ EGLint SurfaceD3D::isPostSubBufferSupported() const
-
- egl::Error SurfaceD3D::querySurfacePointerANGLE(EGLint attribute, void **value)
- {
-- ASSERT(attribute == EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE);
-- *value = mSwapChain->getShareHandle();
-+ ASSERT(attribute == EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE || attribute == EGL_DEVICE_EXT);
-+ if (attribute == EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE)
-+ *value = mSwapChain->getShareHandle();
+@@ -334,6 +334,10 @@ egl::Error SurfaceD3D::querySurfacePointerANGLE(EGLint attribute, void **value)
+ {
+ *value = mSwapChain->getKeyedMutex();
+ }
+ else if (attribute == EGL_DEVICE_EXT)
++ {
+ *value = mSwapChain->getDevice();
- return egl::Error(EGL_SUCCESS);
- }
++ }
+ else UNREACHABLE();
+ return egl::Error(EGL_SUCCESS);
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h
-index 3bde92e..da36e52 100644
+index 1ef6611..171cab5 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h
@@ -41,6 +41,7 @@ class SwapChainD3D : angle::NonCopyable
@@ -53,10 +50,10 @@ index 3bde92e..da36e52 100644
virtual RenderTargetD3D *getColorRenderTarget() = 0;
virtual RenderTargetD3D *getDepthStencilRenderTarget() = 0;
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
-index bcb2505..298f3cc 100644
+index 9432a7f..5a6f202 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
-@@ -703,4 +703,9 @@ void SwapChain11::recreate()
+@@ -915,4 +915,9 @@ void SwapChain11::recreate()
// possibly should use this method instead of reset
}
@@ -67,18 +64,18 @@ index bcb2505..298f3cc 100644
+
}
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
-index 4ea6778..48c808a 100644
+index 583e29c..99198c6 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
-@@ -43,6 +43,8 @@ class SwapChain11 : public SwapChainD3D
- EGLint getWidth() const { return mWidth; }
+@@ -48,6 +48,8 @@ class SwapChain11 : public SwapChainD3D
EGLint getHeight() const { return mHeight; }
+ void *getKeyedMutex() override { return mKeyedMutex; }
+ virtual void *getDevice();
+
- static SwapChain11 *makeSwapChain11(SwapChainD3D *swapChain);
-
private:
+ void release();
+ void initPassThroughResources();
--
-2.1.4
+2.7.0.windows.1
diff --git a/src/angle/patches/0003-ANGLE-Fix-compilation-on-MSVC2010-2012.patch b/src/angle/patches/0003-ANGLE-Fix-compilation-on-MSVC2010-2012.patch
deleted file mode 100644
index 62300e1e9b..0000000000
--- a/src/angle/patches/0003-ANGLE-Fix-compilation-on-MSVC2010-2012.patch
+++ /dev/null
@@ -1,363 +0,0 @@
-From 11304df7f66d0d8bc5dfdc960b86b5cac0f18313 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@intopalo.com>
-Date: Wed, 8 Apr 2015 17:09:47 +0300
-Subject: [PATCH 3/5] ANGLE: Fix compilation on MSVC2010/2012
-
-Allow the D3D11 renderer to build with the June 2010 DirectX SDK.
-This mainly addresses C++11 language incompatibilities, such as replacing
-range-based for loops with iterators.
-
-Change-Id: I2343acedab16845d6a0d4a53cf3145f583efc4a7
----
- src/3rdparty/angle/src/common/angleutils.h | 2 ++
- src/3rdparty/angle/src/common/platform.h | 9 +++++++
- .../angle/src/compiler/translator/OutputHLSL.cpp | 31 +++++++++++++---------
- src/3rdparty/angle/src/libANGLE/Context.cpp | 4 +--
- src/3rdparty/angle/src/libANGLE/Error.h | 1 +
- src/3rdparty/angle/src/libANGLE/Framebuffer.cpp | 23 ++++++++--------
- src/3rdparty/angle/src/libANGLE/State.cpp | 3 ++-
- src/3rdparty/angle/src/libANGLE/Texture.cpp | 2 +-
- .../angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp | 6 +++--
- .../src/libANGLE/renderer/d3d/RendererD3D.cpp | 4 +--
- .../libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp | 3 ++-
- 11 files changed, 55 insertions(+), 33 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/common/angleutils.h b/src/3rdparty/angle/src/common/angleutils.h
-index f3d2019..4cf84a3 100644
---- a/src/3rdparty/angle/src/common/angleutils.h
-+++ b/src/3rdparty/angle/src/common/angleutils.h
-@@ -25,12 +25,14 @@ namespace angle
-
- class NonCopyable
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- public:
- NonCopyable() = default;
- ~NonCopyable() = default;
- protected:
- NonCopyable(const NonCopyable&) = delete;
- void operator=(const NonCopyable&) = delete;
-+#endif
- };
-
- }
-diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
-index be4cb94..3a2aa91 100644
---- a/src/3rdparty/angle/src/common/platform.h
-+++ b/src/3rdparty/angle/src/common/platform.h
-@@ -53,7 +53,9 @@
-
- # if defined(ANGLE_ENABLE_D3D9)
- # include <d3d9.h>
-+# if !defined(ANGLE_TRANSLATOR_IMPLEMENTATION)
- # include <d3dcompiler.h>
-+# endif
- # endif
-
- # if defined(ANGLE_ENABLE_D3D11)
-@@ -70,7 +72,9 @@
- # include <d3d11_1.h>
- # include <dxgi1_2.h>
- # endif
-+# if !defined(ANGLE_TRANSLATOR_IMPLEMENTATION)
- # include <d3dcompiler.h>
-+# endif
- # endif
-
- # if defined(ANGLE_ENABLE_WINDOWS_STORE)
-@@ -83,6 +87,11 @@
- # endif
- # endif
-
-+# if defined(_MSC_VER) && (_MSC_VER <= 1600)
-+# define final
-+# define override
-+# endif
-+
- # undef near
- # undef far
- #endif
-diff --git a/src/3rdparty/angle/src/compiler/translator/OutputHLSL.cpp b/src/3rdparty/angle/src/compiler/translator/OutputHLSL.cpp
-index c3240f5..94225b8 100644
---- a/src/3rdparty/angle/src/compiler/translator/OutputHLSL.cpp
-+++ b/src/3rdparty/angle/src/compiler/translator/OutputHLSL.cpp
-@@ -158,13 +158,13 @@ OutputHLSL::~OutputHLSL()
- SafeDelete(mUnfoldShortCircuit);
- SafeDelete(mStructureHLSL);
- SafeDelete(mUniformHLSL);
-- for (auto &eqFunction : mStructEqualityFunctions)
-+ for (auto it = mStructEqualityFunctions.begin(); it != mStructEqualityFunctions.end(); ++it)
- {
-- SafeDelete(eqFunction);
-+ SafeDelete(*it);
- }
-- for (auto &eqFunction : mArrayEqualityFunctions)
-+ for (auto it = mArrayEqualityFunctions.begin(); it != mArrayEqualityFunctions.end(); ++it)
- {
-- SafeDelete(eqFunction);
-+ SafeDelete(*it);
- }
- }
-
-@@ -340,17 +340,17 @@ void OutputHLSL::header(const BuiltInFunctionEmulator *builtInFunctionEmulator)
- if (!mEqualityFunctions.empty())
- {
- out << "\n// Equality functions\n\n";
-- for (const auto &eqFunction : mEqualityFunctions)
-+ for (auto it = mEqualityFunctions.cbegin(); it != mEqualityFunctions.cend(); ++it)
- {
-- out << eqFunction->functionDefinition << "\n";
-+ out << (*it)->functionDefinition << "\n";
- }
- }
- if (!mArrayAssignmentFunctions.empty())
- {
- out << "\n// Assignment functions\n\n";
-- for (const auto &assignmentFunction : mArrayAssignmentFunctions)
-+ for (auto it = mArrayAssignmentFunctions.cbegin(); it != mArrayAssignmentFunctions.cend(); ++it)
- {
-- out << assignmentFunction.functionDefinition << "\n";
-+ out << it->functionDefinition << "\n";
- }
- }
-
-@@ -1858,8 +1858,9 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
-
- if (!variable->getAsSymbolNode() || variable->getAsSymbolNode()->getSymbol() != "") // Variable declaration
- {
-- for (const auto &seqElement : *sequence)
-+ for (auto it = sequence->cbegin(); it != sequence->cend(); ++it)
- {
-+ const auto &seqElement = *it;
- if (isSingleStatement(seqElement))
- {
- mUnfoldShortCircuit->traverse(seqElement);
-@@ -2941,8 +2942,9 @@ void OutputHLSL::writeDeferredGlobalInitializers(TInfoSinkBase &out)
- << "void initializeDeferredGlobals()\n"
- << "{\n";
-
-- for (const auto &deferredGlobal : mDeferredGlobalInitializers)
-+ for (auto it = mDeferredGlobalInitializers.cbegin(); it != mDeferredGlobalInitializers.cend(); ++it)
- {
-+ const auto &deferredGlobal = *it;
- TIntermSymbol *symbol = deferredGlobal.first;
- TIntermTyped *expression = deferredGlobal.second;
- ASSERT(symbol);
-@@ -2967,8 +2969,9 @@ TString OutputHLSL::addStructEqualityFunction(const TStructure &structure)
- {
- const TFieldList &fields = structure.fields();
-
-- for (const auto &eqFunction : mStructEqualityFunctions)
-+ for (auto it = mStructEqualityFunctions.cbegin(); it != mStructEqualityFunctions.cend(); ++it)
- {
-+ auto *eqFunction = *it;
- if (eqFunction->structure == &structure)
- {
- return eqFunction->functionName;
-@@ -3021,8 +3024,9 @@ TString OutputHLSL::addStructEqualityFunction(const TStructure &structure)
-
- TString OutputHLSL::addArrayEqualityFunction(const TType& type)
- {
-- for (const auto &eqFunction : mArrayEqualityFunctions)
-+ for (auto it = mArrayEqualityFunctions.cbegin(); it != mArrayEqualityFunctions.cend(); ++it)
- {
-+ const auto &eqFunction = *it;
- if (eqFunction->type == type)
- {
- return eqFunction->functionName;
-@@ -3072,8 +3076,9 @@ TString OutputHLSL::addArrayEqualityFunction(const TType& type)
-
- TString OutputHLSL::addArrayAssignmentFunction(const TType& type)
- {
-- for (const auto &assignFunction : mArrayAssignmentFunctions)
-+ for (auto it = mArrayAssignmentFunctions.cbegin(); it != mArrayAssignmentFunctions.cend(); ++it)
- {
-+ const auto &assignFunction = *it;
- if (assignFunction.type == type)
- {
- return assignFunction.functionName;
-diff --git a/src/3rdparty/angle/src/libANGLE/Context.cpp b/src/3rdparty/angle/src/libANGLE/Context.cpp
-index 5ea039f..1da5fda 100644
---- a/src/3rdparty/angle/src/libANGLE/Context.cpp
-+++ b/src/3rdparty/angle/src/libANGLE/Context.cpp
-@@ -158,9 +158,9 @@ Context::~Context()
- deleteTransformFeedback(mTransformFeedbackMap.begin()->first);
- }
-
-- for (auto &zeroTexture : mZeroTextures)
-+ for (auto it = mZeroTextures.begin(); it != mZeroTextures.end(); ++it)
- {
-- zeroTexture.second.set(NULL);
-+ it->second.set(NULL);
- }
- mZeroTextures.clear();
-
-diff --git a/src/3rdparty/angle/src/libANGLE/Error.h b/src/3rdparty/angle/src/libANGLE/Error.h
-index 5812943..896b777 100644
---- a/src/3rdparty/angle/src/libANGLE/Error.h
-+++ b/src/3rdparty/angle/src/libANGLE/Error.h
-@@ -10,6 +10,7 @@
- #define LIBANGLE_ERROR_H_
-
- #include "angle_gl.h"
-+#include "common/platform.h"
- #include <EGL/egl.h>
-
- #include <string>
-diff --git a/src/3rdparty/angle/src/libANGLE/Framebuffer.cpp b/src/3rdparty/angle/src/libANGLE/Framebuffer.cpp
-index 5fa7513..b1dd4a1 100644
---- a/src/3rdparty/angle/src/libANGLE/Framebuffer.cpp
-+++ b/src/3rdparty/angle/src/libANGLE/Framebuffer.cpp
-@@ -48,9 +48,9 @@ Framebuffer::Data::Data(const Caps &caps)
-
- Framebuffer::Data::~Data()
- {
-- for (auto &colorAttachment : mColorAttachments)
-+ for (auto it = mColorAttachments.begin(); it != mColorAttachments.end(); ++it)
- {
-- SafeDelete(colorAttachment);
-+ SafeDelete(*it);
- }
- SafeDelete(mDepthAttachment);
- SafeDelete(mStencilAttachment);
-@@ -66,11 +66,11 @@ FramebufferAttachment *Framebuffer::Data::getReadAttachment() const
-
- FramebufferAttachment *Framebuffer::Data::getFirstColorAttachment() const
- {
-- for (FramebufferAttachment *colorAttachment : mColorAttachments)
-+ for (auto it = mColorAttachments.cbegin(); it != mColorAttachments.cend(); ++it)
- {
-- if (colorAttachment != nullptr)
-+ if (*it != nullptr)
- {
-- return colorAttachment;
-+ return *it;
- }
- }
-
-@@ -115,9 +115,9 @@ void Framebuffer::detachRenderbuffer(GLuint renderbufferId)
-
- void Framebuffer::detachResourceById(GLenum resourceType, GLuint resourceId)
- {
-- for (auto &colorAttachment : mData.mColorAttachments)
-+ for (auto it = mData.mColorAttachments.begin(); it != mData.mColorAttachments.end(); ++it)
- {
-- DeleteMatchingAttachment(colorAttachment, resourceType, resourceId);
-+ DeleteMatchingAttachment(*it, resourceType, resourceId);
- }
-
- DeleteMatchingAttachment(mData.mDepthAttachment, resourceType, resourceId);
-@@ -278,8 +278,9 @@ GLenum Framebuffer::checkStatus(const gl::Data &data) const
- int samples = -1;
- bool missingAttachment = true;
-
-- for (const FramebufferAttachment *colorAttachment : mData.mColorAttachments)
-+ for (auto it = mData.mColorAttachments.cbegin(); it != mData.mColorAttachments.cend(); ++it)
- {
-+ const auto &colorAttachment = *it;
- if (colorAttachment != nullptr)
- {
- if (colorAttachment->getWidth() == 0 || colorAttachment->getHeight() == 0)
-@@ -533,11 +534,11 @@ int Framebuffer::getSamples(const gl::Data &data) const
- {
- // for a complete framebuffer, all attachments must have the same sample count
- // in this case return the first nonzero sample size
-- for (const FramebufferAttachment *colorAttachment : mData.mColorAttachments)
-+ for (auto it = mData.mColorAttachments.cbegin(); it != mData.mColorAttachments.cend(); ++it)
- {
-- if (colorAttachment != nullptr)
-+ if (*it != nullptr)
- {
-- return colorAttachment->getSamples();
-+ return (*it)->getSamples();
- }
- }
- }
-diff --git a/src/3rdparty/angle/src/libANGLE/State.cpp b/src/3rdparty/angle/src/libANGLE/State.cpp
-index 15274c6..4c044d2 100644
---- a/src/3rdparty/angle/src/libANGLE/State.cpp
-+++ b/src/3rdparty/angle/src/libANGLE/State.cpp
-@@ -633,8 +633,9 @@ void State::detachTexture(const TextureMap &zeroTextures, GLuint texture)
-
- void State::initializeZeroTextures(const TextureMap &zeroTextures)
- {
-- for (const auto &zeroTexture : zeroTextures)
-+ for (auto it = zeroTextures.cbegin(); it != zeroTextures.cend(); ++it)
- {
-+ const auto &zeroTexture = *it;
- auto &samplerTextureArray = mSamplerTextures[zeroTexture.first];
-
- for (size_t textureUnit = 0; textureUnit < samplerTextureArray.size(); ++textureUnit)
-diff --git a/src/3rdparty/angle/src/libANGLE/Texture.cpp b/src/3rdparty/angle/src/libANGLE/Texture.cpp
-index 2d68bec..cd4584f 100644
---- a/src/3rdparty/angle/src/libANGLE/Texture.cpp
-+++ b/src/3rdparty/angle/src/libANGLE/Texture.cpp
-@@ -316,7 +316,7 @@ void Texture::setImageDescChain(size_t levels, Extents baseSize, GLenum sizedInt
- }
-
- Texture::ImageDesc::ImageDesc()
-- : ImageDesc(Extents(0, 0, 0), GL_NONE)
-+ : size(0, 0, 0), internalFormat(GL_NONE)
- {
- }
-
-diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp
-index db5f445..add5d62 100644
---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp
-+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp
-@@ -276,8 +276,9 @@ bool DisplayD3D::testDeviceLost()
- egl::Error DisplayD3D::restoreLostDevice()
- {
- // Release surface resources to make the Reset() succeed
-- for (auto &surface : mSurfaceSet)
-+ for (auto it = mSurfaceSet.cbegin(); it != mSurfaceSet.cend(); ++it)
- {
-+ const auto &surface = *it;
- if (surface->getBoundTexture())
- {
- surface->releaseTexImage(EGL_BACK_BUFFER);
-@@ -292,8 +293,9 @@ egl::Error DisplayD3D::restoreLostDevice()
- }
-
- // Restore any surfaces that may have been lost
-- for (const auto &surface : mSurfaceSet)
-+ for (auto it = mSurfaceSet.cbegin(); it != mSurfaceSet.cend(); ++it)
- {
-+ const auto &surface = *it;
- SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
-
- egl::Error error = surfaceD3D->resetSwapChain();
-diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp
-index ff9600e..2ce0ce5 100644
---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp
-+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp
-@@ -47,9 +47,9 @@ RendererD3D::~RendererD3D()
- void RendererD3D::cleanup()
- {
- mScratchMemoryBuffer.resize(0);
-- for (auto &incompleteTexture : mIncompleteTextures)
-+ for (auto it = mIncompleteTextures.begin(); it != mIncompleteTextures.end(); ++it)
- {
-- incompleteTexture.second.set(NULL);
-+ it->second.set(NULL);
- }
- mIncompleteTextures.clear();
- }
-diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
-index ab2a902..da01f32 100644
---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
-+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
-@@ -64,8 +64,9 @@ static gl::Error InvalidateAttachmentSwizzles(const gl::FramebufferAttachment *a
-
- gl::Error Framebuffer11::invalidateSwizzles() const
- {
-- for (gl::FramebufferAttachment *colorAttachment : mData.mColorAttachments)
-+ for (auto it = mData.mColorAttachments.cbegin(); it != mData.mColorAttachments.cend(); ++it)
- {
-+ gl::FramebufferAttachment *colorAttachment = *it;
- gl::Error error = InvalidateAttachmentSwizzles(colorAttachment);
- if (error.isError())
- {
---
-2.1.4
-
diff --git a/src/angle/patches/0006-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch b/src/angle/patches/0004-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch
index 5c6ef7b036..4d7080e77d 100644
--- a/src/angle/patches/0006-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch
+++ b/src/angle/patches/0004-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch
@@ -1,7 +1,7 @@
-From f0fb8d75bd2c7a894df1cb7e7d3dcd1ad0fd88d0 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@intopalo.com>
-Date: Sun, 3 May 2015 20:55:04 +0300
-Subject: [PATCH] ANGLE: Allow Windows Phone to communicate swap region
+From a0c84bec77dd2dab4dd87add17dd1f21e6d8087d Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@theqtcompany.com>
+Date: Tue, 1 Mar 2016 13:39:06 +0100
+Subject: [PATCH 4/7] ANGLE: Allow Windows Phone to communicate swap region
eglPostSubBufferNV is used to communicate the size of the window, as
otherwise there is no way for the renderer to know if the last frame was
@@ -14,7 +14,8 @@ during the next ANGLE rebase.
Task-number: QTBUG-44333
Task-number: QTBUG-43502
-Change-Id: Iec37f7531854184819c30c87eab82d96d56ff133
+
+Change-Id: I2b35c41ed17004524f383350253a936e6bf85117
---
.../angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp | 2 ++
.../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 28 +++++++++++++---------
@@ -23,10 +24,10 @@ Change-Id: Iec37f7531854184819c30c87eab82d96d56ff133
4 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
-index 4fde295..4a87488 100644
+index 0347828..3d27548 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
-@@ -189,6 +189,7 @@ egl::Error SurfaceD3D::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+@@ -211,6 +211,7 @@ egl::Error SurfaceD3D::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
return egl::Error(EGL_SUCCESS);
}
@@ -34,19 +35,19 @@ index 4fde295..4a87488 100644
if (x + width > mWidth)
{
width = mWidth - x;
-@@ -198,6 +199,7 @@ egl::Error SurfaceD3D::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+@@ -220,6 +221,7 @@ egl::Error SurfaceD3D::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
{
height = mHeight - y;
}
+#endif
- if (width == 0 || height == 0)
+ if (width != 0 && height != 0)
{
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
-index 298f3cc..dc539cf 100644
+index 5a6f202..f669f56 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
-@@ -552,18 +552,18 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+@@ -717,18 +717,18 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width,
d3d11::PositionTexCoordVertex *vertices = static_cast<d3d11::PositionTexCoordVertex*>(mappedResource.pData);
@@ -74,7 +75,7 @@ index 298f3cc..dc539cf 100644
const NativeWindow::RotationFlags flags = mNativeWindow.rotationFlags();
const bool rotateL = flags == NativeWindow::RotateLeft;
-@@ -573,6 +573,12 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+@@ -738,6 +738,12 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width,
d3d11::SetPositionTexCoordVertex(&vertices[2], x2, y1, rotateR ? u1 : u2, rotateL ? v2 : v1);
d3d11::SetPositionTexCoordVertex(&vertices[3], x2, y2, rotateL ? u1 : u2, rotateR ? v1 : v2);
#else
@@ -87,7 +88,7 @@ index 298f3cc..dc539cf 100644
float u1 = x / float(mWidth);
float v1 = y / float(mHeight);
float u2 = (x + width) / float(mWidth);
-@@ -613,8 +619,8 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+@@ -788,8 +794,8 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width,
viewport.TopLeftX = 0;
viewport.TopLeftY = 0;
#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
@@ -96,13 +97,13 @@ index 298f3cc..dc539cf 100644
+ viewport.Width = (rotateL || rotateR) ? height : width;
+ viewport.Height = (rotateL || rotateR) ? width : height;
#else
- viewport.Width = mWidth;
- viewport.Height = mHeight;
+ viewport.Width = static_cast<FLOAT>(mWidth);
+ viewport.Height = static_cast<FLOAT>(mHeight);
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
-index 350526c..fa9a69c 100644
+index 6a4795a..b074e8c 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
-@@ -100,6 +100,7 @@ bool CoreWindowNativeWindow::registerForSizeChangeEvents()
+@@ -132,6 +132,7 @@ bool CoreWindowNativeWindow::registerForSizeChangeEvents()
if (SUCCEEDED(result))
{
result = mDisplayInformation->add_OrientationChanged(orientationChangedHandler.Get(), &mOrientationChangedEventToken);
@@ -110,7 +111,7 @@ index 350526c..fa9a69c 100644
}
#endif
-@@ -135,8 +136,8 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device, DXGIFactor
+@@ -175,8 +176,8 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device,
}
DXGI_SWAP_CHAIN_DESC1 swapChainDesc = { 0 };
@@ -122,10 +123,10 @@ index 350526c..fa9a69c 100644
swapChainDesc.Stereo = FALSE;
swapChainDesc.SampleDesc.Count = 1;
diff --git a/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp b/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp
-index ded73db..62f3ca1 100644
+index 7536b19..e3c35d5 100644
--- a/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp
-@@ -101,12 +101,14 @@ EGLBoolean EGLAPIENTRY PostSubBufferNV(EGLDisplay dpy, EGLSurface surface, EGLin
+@@ -108,12 +108,14 @@ EGLBoolean EGLAPIENTRY PostSubBufferNV(EGLDisplay dpy, EGLSurface surface, EGLin
return EGL_FALSE;
}
@@ -141,5 +142,5 @@ index ded73db..62f3ca1 100644
error = eglSurface->postSubBuffer(x, y, width, height);
if (error.isError())
--
-1.9.5.msysgit.0
+2.7.0.windows.1
diff --git a/src/angle/patches/0007-ANGLE-Fix-compilation-without-d3d11.patch b/src/angle/patches/0005-ANGLE-Fix-compilation-without-d3d11.patch
index eca7d0e162..f32702dadf 100644
--- a/src/angle/patches/0007-ANGLE-Fix-compilation-without-d3d11.patch
+++ b/src/angle/patches/0005-ANGLE-Fix-compilation-without-d3d11.patch
@@ -1,19 +1,19 @@
-From 1f993a2492a618becd4bf89ef0d6cb5d2c9aa67a Mon Sep 17 00:00:00 2001
-From: Kai Koehne <kai.koehne@theqtcompany.com>
-Date: Mon, 11 May 2015 15:17:12 +0200
-Subject: [PATCH] ANGLE: Fix compilation without d3d11
+From c224d27faf33fe2830b35eba22af0a637e1309cb Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@theqtcompany.com>
+Date: Tue, 1 Mar 2016 14:14:29 +0100
+Subject: [PATCH 5/7] ANGLE: Fix compilation without d3d11
-Change-Id: I0b772698cf521083e5ecf35a395af57100a50131
+Change-Id: I70ca8ef8ed205465a20c47756634ef6efc16ce85
---
src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h | 4 +++-
.../angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp | 2 ++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
-index 81b9ea7..0f70fe4 100644
+index 1c94538..612b06b 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
-@@ -38,7 +38,7 @@ class InspectableNativeWindow;
+@@ -39,7 +39,7 @@ class InspectableNativeWindow;
using namespace Microsoft::WRL;
using namespace Microsoft::WRL::Wrappers;
@@ -22,7 +22,7 @@ index 81b9ea7..0f70fe4 100644
typedef IDXGISwapChain DXGISwapChain;
typedef IDXGIFactory DXGIFactory;
#endif
-@@ -60,9 +60,11 @@ class NativeWindow
+@@ -68,9 +68,11 @@ class NativeWindow
#endif
static bool isValidNativeWindow(EGLNativeWindowType window);
@@ -35,10 +35,10 @@ index 81b9ea7..0f70fe4 100644
inline EGLNativeWindowType getNativeWindow() const { return mWindow; }
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
-index 9d8f0bb..0a4f45b 100644
+index 05d7a46..d96fed7 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
-@@ -37,6 +37,7 @@ bool NativeWindow::isValidNativeWindow(EGLNativeWindowType window)
+@@ -56,6 +56,7 @@ bool NativeWindow::isValidNativeWindow(EGLNativeWindowType window)
return IsWindow(window) == TRUE;
}
@@ -46,12 +46,14 @@ index 9d8f0bb..0a4f45b 100644
HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory,
DXGI_FORMAT format, unsigned int width, unsigned int height,
DXGISwapChain** swapChain)
-@@ -65,4 +66,5 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory
+@@ -191,6 +192,7 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory
return factory->CreateSwapChain(device, &swapChainDesc, swapChain);
}
+#endif
- }
+
+ void NativeWindow::commitChange()
+ {
--
-1.9.5.msysgit.0
+2.7.0.windows.1
diff --git a/src/angle/patches/0006-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-requirements.patch b/src/angle/patches/0006-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-requirements.patch
new file mode 100644
index 0000000000..eb0572f201
--- /dev/null
+++ b/src/angle/patches/0006-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-requirements.patch
@@ -0,0 +1,57 @@
+From b250c8e9c04cd1adccab7a6885273c9e6129131f Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@theqtcompany.com>
+Date: Tue, 1 Mar 2016 14:16:52 +0100
+Subject: [PATCH 6/7] ANGLE: Fix Windows Store D3D Trim and Level 9 requirements
+
+Due to additional validation not covered in previous patches, the Windows
+Store certification compatibility had regressed. These changes ensure that
+the required D3D behaviors are met.
+
+Change-Id: If8bc2f8cd4b2f84e1d92a1627951da2537212125
+---
+ .../angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 15 ++++++++++++++-
+ src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp | 2 ++
+ 2 files changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+index 03159bb..ea84783 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+@@ -453,7 +453,20 @@ Renderer11::Renderer11(egl::Display *display)
+ if (requestedMajorVersion == 9 && requestedMinorVersion == 3)
+ #endif
+ {
+- mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_3);
++ if (requestedMinorVersion == EGL_DONT_CARE || requestedMinorVersion >= 3)
++ {
++ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_3);
++ }
++#if defined(ANGLE_ENABLE_WINDOWS_STORE)
++ if (requestedMinorVersion == EGL_DONT_CARE || requestedMinorVersion >= 2)
++ {
++ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_2);
++ }
++ if (requestedMinorVersion == EGL_DONT_CARE || requestedMinorVersion >= 1)
++ {
++ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_1);
++ }
++#endif
+ }
+
+ EGLint requestedDeviceType = attributes.get(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE,
+diff --git a/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp b/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp
+index e3c35d5..6c7e2ff 100644
+--- a/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp
++++ b/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp
+@@ -50,6 +50,8 @@ EGLBoolean EGLAPIENTRY QuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surfa
+ // validate the attribute parameter
+ switch (attribute)
+ {
++ case EGL_DEVICE_EXT:
++ break;
+ case EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE:
+ if (!display->getExtensions().surfaceD3DTexture2DShareHandle)
+ {
+--
+2.7.0.windows.1
+
diff --git a/src/angle/patches/0007-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch b/src/angle/patches/0007-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch
new file mode 100644
index 0000000000..badd1d7201
--- /dev/null
+++ b/src/angle/patches/0007-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch
@@ -0,0 +1,45 @@
+From 955357382b1bb02043ec744ef3b5929e29c4f8cc Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@theqtcompany.com>
+Date: Tue, 12 Apr 2016 14:44:26 +0200
+Subject: [PATCH 7/7] ANGLE/D3D11: Suppress keyboard handling of DXGI.
+
+Set the DXGI_MWA_NO_ALT_ENTER to suppress the Alt-Enter shortcut
+causing the window to become full screen.
+
+Task-number: QTBUG-44904
+Change-Id: If24c32df69a5a47e29d14be8f2624abfac5cd634
+---
+ .../src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
+index 7da7f31..da6460b 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
+@@ -171,6 +171,8 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory
+ HRESULT result = factory2->CreateSwapChainForHwnd(device, mWindow, &swapChainDesc, nullptr, nullptr, &swapChain1);
+ if (SUCCEEDED(result))
+ {
++ const HRESULT makeWindowAssociationResult = factory->MakeWindowAssociation(mWindow, DXGI_MWA_NO_ALT_ENTER);
++ UNUSED_VARIABLE(makeWindowAssociationResult);
+ *swapChain = static_cast<DXGISwapChain*>(swapChain1);
+ }
+ SafeRelease(factory2);
+@@ -196,7 +198,13 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory
+ swapChainDesc.Windowed = TRUE;
+ swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
+
+- return factory->CreateSwapChain(device, &swapChainDesc, swapChain);;
++ const HRESULT result = factory->CreateSwapChain(device, &swapChainDesc, swapChain);
++ if (SUCCEEDED(result))
++ {
++ const HRESULT makeWindowAssociationResult = factory->MakeWindowAssociation(mWindow, DXGI_MWA_NO_ALT_ENTER);
++ UNUSED_VARIABLE(makeWindowAssociationResult);
++ }
++ return result;
+ }
+ #endif
+
+--
+2.7.0.windows.1
+
diff --git a/src/angle/patches/0008-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-require.patch b/src/angle/patches/0008-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-require.patch
deleted file mode 100644
index 705219ed24..0000000000
--- a/src/angle/patches/0008-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-require.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 3d696560f987a08d608b29bf3e0f557e96bebc56 Mon Sep 17 00:00:00 2001
-From: Samuel Nevala <samuel.nevala@intopalo.com>
-Date: Sat, 3 Oct 2015 02:30:26 +0300
-Subject: [PATCH] ANGLE: Fix Windows Store D3D Trim and Level 9 requirements
-
-Due to additional validation not covered in previous patches, the Windows
-Store certification compatibility had regressed. These changes ensure that
-the required D3D behaviors are met.
-
-Change-Id: I0a74f0d2fecaa87d4a9409da3a7a194254609759
----
- .../angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 16 +++++++++++++++-
- .../angle/src/libGLESv2/entry_points_egl_ext.cpp | 2 ++
- 2 files changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-index 5291a3a..61d9212 100644
---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-@@ -296,7 +296,21 @@ Renderer11::Renderer11(egl::Display *display)
- if (requestedMajorVersion == 9 && requestedMinorVersion == 3)
- #endif
- {
-- mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_3);
-+ if (requestedMinorVersion == EGL_DONT_CARE || requestedMinorVersion >= 3)
-+ {
-+ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_3);
-+ }
-+#if defined(ANGLE_ENABLE_WINDOWS_STORE)
-+ if (requestedMinorVersion == EGL_DONT_CARE || requestedMinorVersion >= 2)
-+ {
-+ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_2);
-+ }
-+ if (requestedMinorVersion == EGL_DONT_CARE || requestedMinorVersion >= 1)
-+ {
-+ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_1);
-+ }
-+#endif
- }
-
- EGLint requestedDeviceType = attributes.get(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE,
-diff --git a/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp b/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp
-index 62f3ca1..02b6631 100644
---- a/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp
-@@ -49,6 +49,8 @@ EGLBoolean EGLAPIENTRY QuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surfa
- // validate the attribute parameter
- switch (attribute)
- {
-+ case EGL_DEVICE_EXT:
-+ break;
- case EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE:
- if (!display->getExtensions().surfaceD3DTexture2DShareHandle)
- {
---
-1.9.5.msysgit.1
-
diff --git a/src/angle/patches/0008-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch b/src/angle/patches/0008-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch
index cf383d7106..7f7517e554 100644
--- a/src/angle/patches/0008-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch
+++ b/src/angle/patches/0008-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch
@@ -1,7 +1,7 @@
-From 333bb863e5c3e04fcc513e4750208fa3742be7a1 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@intopalo.com>
-Date: Sat, 8 Aug 2015 21:42:03 +0300
-Subject: [PATCH 2/4] ANGLE: Use pixel sizes in the XAML swap chain
+From 7a3851e74393eb254826face20b8e9af74bbdf0b Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@theqtcompany.com>
+Date: Thu, 17 Mar 2016 15:46:56 +0100
+Subject: [PATCH] ANGLE: Use pixel sizes in the XAML swap chain
This is necessary for Qt applications, as they render to GL in physical
pixels. This is consistent with the CoreWindow swap chain behavior.
@@ -15,19 +15,19 @@ This change only affects Windows Runtime targets.
Change-Id: I401ae81028a9dfdb9da37f51c60844467c476f76
---
.../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 46 ----------------------
- .../d3d/d3d11/winrt/CoreWindowNativeWindow.cpp | 21 ----------
- .../d3d/d3d11/winrt/CoreWindowNativeWindow.h | 4 +-
- .../d3d/d3d11/winrt/InspectableNativeWindow.cpp | 21 ++++++++++
- .../d3d/d3d11/winrt/InspectableNativeWindow.h | 10 +++--
- .../d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp | 30 ++++++++------
+ .../d3d/d3d11/winrt/CoreWindowNativeWindow.cpp | 25 +-----------
+ .../d3d/d3d11/winrt/CoreWindowNativeWindow.h | 7 +---
+ .../d3d/d3d11/winrt/InspectableNativeWindow.cpp | 20 ++++++++++
+ .../d3d/d3d11/winrt/InspectableNativeWindow.h | 9 +++--
+ .../d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp | 43 ++++++++++++--------
.../d3d/d3d11/winrt/SwapChainPanelNativeWindow.h | 7 ++--
- 7 files changed, 49 insertions(+), 90 deletions(-)
+ 7 files changed, 58 insertions(+), 99 deletions(-)
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
-index dc539cf..0af2cf1 100644
+index f80f24b..785a83c 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
-@@ -154,14 +154,8 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
+@@ -226,14 +226,8 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe
const bool useSharedResource = !mNativeWindow.getNativeWindow() && mRenderer->getShareHandleSupport();
D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0};
@@ -42,9 +42,9 @@ index dc539cf..0af2cf1 100644
offscreenTextureDesc.Format = backbufferFormatInfo.texFormat;
offscreenTextureDesc.MipLevels = 1;
offscreenTextureDesc.ArraySize = 1;
-@@ -241,14 +235,8 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
- if (mDepthBufferFormat != GL_NONE)
- {
+@@ -346,14 +340,8 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe
+ d3d11::GetTextureFormatInfo(mDepthBufferFormat, mRenderer->getRenderer11DeviceCaps());
+
D3D11_TEXTURE2D_DESC depthStencilTextureDesc;
-#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
- const int textureLength = std::max(backbufferWidth, backbufferHeight);
@@ -57,18 +57,18 @@ index dc539cf..0af2cf1 100644
depthStencilTextureDesc.Format = depthBufferFormatInfo.texFormat;
depthStencilTextureDesc.MipLevels = 1;
depthStencilTextureDesc.ArraySize = 1;
-@@ -349,7 +337,6 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
+@@ -438,7 +426,6 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
return EGL_SUCCESS;
}
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE) || (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
// Can only call resize if we have already created our swap buffer and resources
- ASSERT(mSwapChain && mBackBufferTexture && mBackBufferRTView);
+ ASSERT(mSwapChain && mBackBufferTexture && mBackBufferRTView && mBackBufferSRView);
-@@ -392,12 +379,6 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
- }
+@@ -496,12 +483,6 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
+ mFirstSwap = true;
- return resetOffscreenTexture(backbufferWidth, backbufferHeight);
+ return resetOffscreenBuffers(backbufferWidth, backbufferHeight);
-#else
- // Do nothing on Windows Phone apart from updating the internal buffer/width height
- mWidth = backbufferWidth;
@@ -77,8 +77,8 @@ index dc539cf..0af2cf1 100644
-#endif
}
- EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swapInterval)
-@@ -552,27 +533,6 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+ DXGI_FORMAT SwapChain11::getSwapChainNativeFormat() const
+@@ -725,27 +706,6 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width,
d3d11::PositionTexCoordVertex *vertices = static_cast<d3d11::PositionTexCoordVertex*>(mappedResource.pData);
@@ -106,7 +106,7 @@ index dc539cf..0af2cf1 100644
// Create a quad in homogeneous coordinates
float x1 = (x / float(mWidth)) * 2.0f - 1.0f;
float y1 = (y / float(mHeight)) * 2.0f - 1.0f;
-@@ -588,7 +548,6 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+@@ -771,7 +731,6 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width,
d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, u1, v2);
d3d11::SetPositionTexCoordVertex(&vertices[2], x2, y1, u2, v1);
d3d11::SetPositionTexCoordVertex(&vertices[3], x2, y2, u2, v2);
@@ -114,7 +114,7 @@ index dc539cf..0af2cf1 100644
deviceContext->Unmap(mQuadVB, 0);
-@@ -618,13 +577,8 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+@@ -801,13 +760,8 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width,
D3D11_VIEWPORT viewport;
viewport.TopLeftX = 0;
viewport.TopLeftY = 0;
@@ -122,17 +122,26 @@ index dc539cf..0af2cf1 100644
- viewport.Width = (rotateL || rotateR) ? height : width;
- viewport.Height = (rotateL || rotateR) ? width : height;
-#else
- viewport.Width = mWidth;
- viewport.Height = mHeight;
+ viewport.Width = static_cast<FLOAT>(mWidth);
+ viewport.Height = static_cast<FLOAT>(mHeight);
-#endif
viewport.MinDepth = 0.0f;
viewport.MaxDepth = 1.0f;
deviceContext->RSSetViewports(1, &viewport);
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
-index fa9a69c..f45a077 100644
+index b074e8c..f401db6 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
-@@ -191,25 +191,4 @@ HRESULT GetCoreWindowSizeInPixels(const ComPtr<ABI::Windows::UI::Core::ICoreWind
+@@ -222,7 +222,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device,
+ return result;
+ }
+
+-inline HRESULT CoreWindowNativeWindow::scaleSwapChain(const SIZE &windowSize, const RECT &clientRect)
++inline HRESULT CoreWindowNativeWindow::scaleSwapChain(const Size &windowSize, const RECT &clientRect)
+ {
+ // We don't need to do any additional work to scale CoreWindow swapchains.
+ // Using DXGI_SCALING_STRETCH to create the swapchain above does all the necessary work.
+@@ -240,27 +240,4 @@ HRESULT GetCoreWindowSizeInPixels(const ComPtr<ABI::Windows::UI::Core::ICoreWind
return result;
}
@@ -140,16 +149,18 @@ index fa9a69c..f45a077 100644
-static float GetLogicalDpi()
-{
- ComPtr<ABI::Windows::Graphics::Display::IDisplayPropertiesStatics> displayProperties;
-- float dpi = 96.0f;
-
- if (SUCCEEDED(GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(), displayProperties.GetAddressOf())))
- {
+- float dpi = 96.0f;
- if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi)))
- {
- return dpi;
- }
- }
-- return dpi;
+-
+- // Return 96 dpi as a default if display properties cannot be obtained.
+- return 96.0f;
-}
-
-long ConvertDipsToPixels(float dips)
@@ -159,18 +170,28 @@ index fa9a69c..f45a077 100644
-}
}
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
-index 59df9d5..87cdfe6 100644
+index 4de235a..fc1cd12 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
-@@ -19,7 +19,6 @@ typedef ABI::Windows::Foundation::__FITypedEventHandler_2_Windows__CGraphics__CD
+@@ -19,8 +19,6 @@ typedef ABI::Windows::Foundation::__FITypedEventHandler_2_Windows__CGraphics__CD
namespace rx
{
-long ConvertDipsToPixels(float dips);
-
+-
class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enable_shared_from_this<CoreWindowNativeWindow>
{
-@@ -64,8 +63,7 @@ class CoreWindowSizeChangedHandler :
+ public:
+@@ -36,7 +34,7 @@ class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enabl
+ DXGISwapChain **swapChain) override;
+
+ protected:
+- HRESULT scaleSwapChain(const SIZE &windowSize, const RECT &clientRect) override;
++ HRESULT scaleSwapChain(const Size &windowSize, const RECT &clientRect) override;
+
+ bool registerForSizeChangeEvents();
+ void unregisterForSizeChangeEvents();
+@@ -74,8 +72,7 @@ class CoreWindowSizeChangedHandler :
ABI::Windows::Foundation::Size windowSize;
if (SUCCEEDED(sizeChangedEventArgs->get_Size(&windowSize)))
{
@@ -181,14 +202,13 @@ index 59df9d5..87cdfe6 100644
}
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
-index 2bf48c5..e83f479 100644
+index c9b203e..aacfadd 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
-@@ -288,4 +288,25 @@ HRESULT GetOptionalSizePropertyValue(const ComPtr<ABI::Windows::Foundation::Coll
-
+@@ -381,4 +381,24 @@ HRESULT GetOptionalSinglePropertyValue(const ComPtr<ABI::Windows::Foundation::Co
return result;
}
-+
+
+static float GetLogicalDpi()
+{
+ ComPtr<ABI::Windows::Graphics::Display::IDisplayPropertiesStatics> displayProperties;
@@ -211,7 +231,7 @@ index 2bf48c5..e83f479 100644
+}
}
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
-index 575bdf8..f053407 100644
+index 70e5fe7..cdbf40e 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
@@ -26,6 +26,8 @@ using namespace ABI::Windows::Foundation::Collections;
@@ -223,122 +243,142 @@ index 575bdf8..f053407 100644
class InspectableNativeWindow
{
public:
-@@ -45,7 +47,7 @@ class InspectableNativeWindow
- virtual HRESULT createSwapChain(ID3D11Device *device, DXGIFactory *factory, DXGI_FORMAT format, unsigned int width, unsigned int height, DXGISwapChain **swapChain) = 0;
- virtual bool registerForSizeChangeEvents() = 0;
- virtual void unregisterForSizeChangeEvents() = 0;
-- virtual HRESULT scaleSwapChain(const SIZE& newSize) { return S_OK; }
-+ virtual HRESULT scaleSwapChain(const Size& newSize) { return S_OK; }
-
- bool getClientRect(RECT *rect)
- {
-@@ -59,11 +61,11 @@ class InspectableNativeWindow
- return true;
+@@ -65,7 +67,7 @@ class InspectableNativeWindow
}
-- void setNewClientSize(const SIZE &newSize)
-+ void setNewClientSize(const Size &newSize)
+ // setNewClientSize is used by the WinRT size change handler. It isn't used by the rest of ANGLE.
+- void setNewClientSize(const SIZE &newWindowSize)
++ void setNewClientSize(const Size &newWindowSize)
{
-- if (mSupportsSwapChainResize && !mRequiresSwapChainScaling)
-+ if (mSupportsSwapChainResize)
- {
-- mNewClientRect = { 0, 0, newSize.cx, newSize.cy };
-+ mNewClientRect = { 0, 0, ConvertDipsToPixels(newSize.Width), ConvertDipsToPixels(newSize.Height) };
- mClientRectChanged = true;
- }
+ // If the client doesn't support swapchain resizing then we should have already unregistered from size change handler
+ ASSERT(mSupportsSwapChainResize);
+@@ -76,7 +78,8 @@ class InspectableNativeWindow
+ if (!mSwapChainSizeSpecified)
+ {
+ // We don't have to check if a swapchain scale was specified here; the default value is 1.0f which will have no effect.
+- mNewClientRect = { 0, 0, static_cast<long>(newWindowSize.cx * mSwapChainScale), static_cast<long>(newWindowSize.cy * mSwapChainScale) };
++ mNewClientRect = { 0, 0, ConvertDipsToPixels(newSize.Width), ConvertDipsToPixels(newSize.Height) };
+ mClientRectChanged = true;
+
+ // If a scale was specified, then now is the time to apply the scale matrix for the new swapchain size and window size
+@@ -106,7 +109,7 @@ class InspectableNativeWindow
+ }
+ protected:
+- virtual HRESULT scaleSwapChain(const SIZE &windowSize, const RECT &clientRect) = 0;
++ virtual HRESULT scaleSwapChain(const Size &windowSize, const RECT &clientRect) = 0;
+
+ bool mSupportsSwapChainResize; // Support for IDXGISwapChain::ResizeBuffers method
+ bool mSwapChainSizeSpecified; // If an EGLRenderSurfaceSizeProperty was specified
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
-index 53899db..0b48b54 100644
+index 1ed3645..d3ed35b 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
-@@ -66,7 +66,7 @@ bool SwapChainPanelNativeWindow::initialize(EGLNativeWindowType window, IPropert
- }
- else
+@@ -171,12 +171,15 @@ bool SwapChainPanelNativeWindow::initialize(EGLNativeWindowType window, IPropert
{
-- result = GetSwapChainPanelSize(mSwapChainPanel, &mClientRect);
-+ result = GetSwapChainPanelSize(mSwapChainPanel, &mClientRect, &mRequiresSwapChainScaling);
+ SIZE swapChainPanelSize;
+ result = GetSwapChainPanelSize(mSwapChainPanel, mSwapChainPanelDispatcher,
+- &swapChainPanelSize);
++ &swapChainPanelSize, &mSwapChainScale);
++ if (mSwapChainScale != 1.0f)
++ mSwapChainScaleSpecified = true;
+
+ if (SUCCEEDED(result))
+ {
+ // Update the client rect to account for any swapchain scale factor
+- mClientRect = { 0, 0, static_cast<long>(swapChainPanelSize.cx * mSwapChainScale), static_cast<long>(swapChainPanelSize.cy * mSwapChainScale) };
++ mClientRect = { 0, 0, static_cast<long>(ConvertDipsToPixels(swapChainPanelSize.cx * mSwapChainScale)),
++ static_cast<long>(ConvertDipsToPixels(swapChainPanelSize.cy * mSwapChainScale)) };
+ }
}
}
-
-@@ -139,7 +139,6 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device, DXGIFa
+@@ -269,7 +272,6 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device,
ComPtr<IDXGISwapChain1> newSwapChain;
ComPtr<ISwapChainPanelNative> swapChainPanelNative;
-- RECT currentPanelSize = {};
+- SIZE currentPanelSize = {};
HRESULT result = factory->CreateSwapChainForComposition(device, &swapChainDesc, nullptr, newSwapChain.ReleaseAndGetAddressOf());
-@@ -167,13 +166,13 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device, DXGIFa
- // first reading the current size of the swapchain panel, then scaling
- if (SUCCEEDED(result) && mRequiresSwapChainScaling)
+@@ -304,24 +306,24 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device,
{
-- result = GetSwapChainPanelSize(mSwapChainPanel, &currentPanelSize);
-- }
-+ ComPtr<ABI::Windows::UI::Xaml::IUIElement> uiElement;
-+ result = mSwapChainPanel.As(&uiElement);
-+ ASSERT(SUCCEEDED(result));
-
-- // Scale the swapchain to fit inside the contents of the panel.
-- if (SUCCEEDED(result) && mRequiresSwapChainScaling)
-- {
-- SIZE currentSize = { currentPanelSize.right, currentPanelSize.bottom };
-+ Size currentSize;
-+ result = uiElement->get_RenderSize(&currentSize);
-+ ASSERT(SUCCEEDED(result));
- result = scaleSwapChain(currentSize);
+ if (mSwapChainSizeSpecified || mSwapChainScaleSpecified)
+ {
+- result = GetSwapChainPanelSize(mSwapChainPanel, mSwapChainPanelDispatcher,
+- &currentPanelSize);
+-
+- // Scale the swapchain to fit inside the contents of the panel.
+- if (SUCCEEDED(result))
+- {
+- result = scaleSwapChain(currentPanelSize, mClientRect);
+- }
++ ComPtr<ABI::Windows::UI::Xaml::IUIElement> uiElement;
++ result = mSwapChainPanel.As(&uiElement);
++ ASSERT(SUCCEEDED(result));
++
++ Size currentSize;
++ result = uiElement->get_RenderSize(&currentSize);
++ ASSERT(SUCCEEDED(result));
++ result = scaleSwapChain(currentSize, mClientRect);
+ }
}
-@@ -190,9 +189,9 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device, DXGIFa
return result;
}
--HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const SIZE &newSize)
-+HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const Size &newSize)
+-HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const SIZE &windowSize, const RECT &clientRect)
++HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const Size &windowSize, const RECT &clientRect)
{
-- ABI::Windows::Foundation::Size renderScale = { (float)newSize.cx/(float)mClientRect.right, (float)newSize.cy/(float)mClientRect.bottom };
-+ ABI::Windows::Foundation::Size renderScale = { newSize.Width / mNewClientRect.right, newSize.Height / mNewClientRect.bottom };
+- Size renderScale = {(float)windowSize.cx / (float)clientRect.right,
+- (float)windowSize.cy / (float)clientRect.bottom};
++ Size renderScale = {windowSize.Width / clientRect.right,
++ windowSize.Height / clientRect.bottom};
// Setup a scale matrix for the swap chain
DXGI_MATRIX_3X2_F scaleMatrix = {};
scaleMatrix._11 = renderScale.Width;
-@@ -208,7 +207,7 @@ HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const SIZE &newSize)
- return result;
- }
-
--HRESULT GetSwapChainPanelSize(const ComPtr<ABI::Windows::UI::Xaml::Controls::ISwapChainPanel> &swapChainPanel, RECT *windowSize)
-+HRESULT GetSwapChainPanelSize(const ComPtr<ABI::Windows::UI::Xaml::Controls::ISwapChainPanel> &swapChainPanel, RECT *windowSize, bool *scalingActive)
+@@ -340,7 +342,7 @@ HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const SIZE &windowSize, const
+ HRESULT GetSwapChainPanelSize(
+ const ComPtr<ABI::Windows::UI::Xaml::Controls::ISwapChainPanel> &swapChainPanel,
+ const ComPtr<ICoreDispatcher> &dispatcher,
+- SIZE *windowSize)
++ SIZE *windowSize, float *scaleFactor)
{
- ComPtr<ABI::Windows::UI::Xaml::IUIElement> uiElement;
- ABI::Windows::Foundation::Size renderSize = { 0, 0 };
-@@ -220,7 +219,14 @@ HRESULT GetSwapChainPanelSize(const ComPtr<ABI::Windows::UI::Xaml::Controls::ISw
+ ComPtr<IUIElement> uiElement;
+ Size renderSize = {0, 0};
+@@ -357,9 +359,16 @@ HRESULT GetSwapChainPanelSize(
if (SUCCEEDED(result))
{
-- *windowSize = { 0, 0, lround(renderSize.Width), lround(renderSize.Height) };
+- *windowSize = { lround(renderSize.Width), lround(renderSize.Height) };
+ long width = ConvertDipsToPixels(renderSize.Width);
+ long height = ConvertDipsToPixels(renderSize.Height);
-+ *windowSize = { 0, 0, width, height };
++ *windowSize = { width, height };
+
-+ if (scalingActive)
++ if (scaleFactor)
+ {
-+ *scalingActive = width != renderSize.Width || height != renderSize.Height;
++ *scaleFactor = renderSize.Width / width;
+ }
}
return result;
+ }
+-}
+\ No newline at end of file
++}
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
-index caf327d..5debd2f 100644
+index 9cc051d..09d87ad 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
-@@ -22,7 +22,7 @@ class SwapChainPanelNativeWindow : public InspectableNativeWindow, public std::e
+@@ -28,7 +28,7 @@ class SwapChainPanelNativeWindow : public InspectableNativeWindow, public std::e
+ DXGISwapChain **swapChain) override;
+
+ protected:
+- HRESULT scaleSwapChain(const SIZE &windowSize, const RECT &clientRect) override;
++ HRESULT scaleSwapChain(const Size &windowSize, const RECT &clientRect) override;
+
bool registerForSizeChangeEvents();
void unregisterForSizeChangeEvents();
- HRESULT createSwapChain(ID3D11Device *device, DXGIFactory *factory, DXGI_FORMAT format, unsigned int width, unsigned int height, DXGISwapChain **swapChain);
-- HRESULT scaleSwapChain(const SIZE &newSize);
-+ HRESULT scaleSwapChain(const Size &newSize) override;
-
- private:
- ComPtr<ABI::Windows::UI::Xaml::Controls::ISwapChainPanel> mSwapChainPanel;
-@@ -62,8 +62,7 @@ class SwapChainPanelSizeChangedHandler :
+@@ -72,8 +72,7 @@ class SwapChainPanelSizeChangedHandler :
HRESULT result = sizeChangedEventArgs->get_NewSize(&newSize);
if (SUCCEEDED(result))
{
@@ -348,14 +388,14 @@ index caf327d..5debd2f 100644
}
}
-@@ -74,6 +73,6 @@ class SwapChainPanelSizeChangedHandler :
- std::weak_ptr<InspectableNativeWindow> mHost;
- };
-
--HRESULT GetSwapChainPanelSize(const ComPtr<ABI::Windows::UI::Xaml::Controls::ISwapChainPanel> &swapChainPanel, RECT *windowSize);
-+HRESULT GetSwapChainPanelSize(const ComPtr<ABI::Windows::UI::Xaml::Controls::ISwapChainPanel> &swapChainPanel, RECT *windowSize, bool *scalingActive = nullptr);
+@@ -87,6 +86,6 @@ class SwapChainPanelSizeChangedHandler :
+ HRESULT GetSwapChainPanelSize(
+ const ComPtr<ABI::Windows::UI::Xaml::Controls::ISwapChainPanel> &swapChainPanel,
+ const ComPtr<ABI::Windows::UI::Core::ICoreDispatcher> &dispatcher,
+- SIZE *windowSize);
++ SIZE *windowSize, float *scaleFactor);
}
#endif // LIBANGLE_RENDERER_D3D_D3D11_WINRT_SWAPCHAINPANELNATIVEWINDOW_H_
--
-1.9.5.msysgit.1
+2.7.0.windows.1
diff --git a/src/angle/patches/0009-ANGLE-Fix-winrt-backing-store-to-support-feature-lev.patch b/src/angle/patches/0009-ANGLE-Fix-winrt-backing-store-to-support-feature-lev.patch
deleted file mode 100644
index 8f66b0c1d8..0000000000
--- a/src/angle/patches/0009-ANGLE-Fix-winrt-backing-store-to-support-feature-lev.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 54461670e035ffcb41268a02e9b0c441cc008ddb Mon Sep 17 00:00:00 2001
-From: Samuel Nevala <samuel.nevala@intopalo.com>
-Date: Thu, 22 Oct 2015 14:02:28 +0300
-Subject: [PATCH] ANGLE: Fix winrt backing store to support feature level 9_3
- devices.
-
-Partially revert c7abf81786f4a0c. Instead of using ES3 entry point
-use ES2 for blitting. Small change is also required to ANGLE that
-makes ES2 entry to behave same as ES3.
-
-Task-Id: QTBUG-48266
-Change-Id: Idc51f00a659c91f740876be071eb71bff69e0e38
----
- .../src/libGLESv2/entry_points_gles_2_0_ext.cpp | 4 +++
- ...inrt-backing-store-to-support-feature-lev.patch | 33 ++++++++++++++++++++++
- src/plugins/platforms/winrt/qwinrtbackingstore.cpp | 11 ++++----
- 3 files changed, 42 insertions(+), 6 deletions(-)
- create mode 100644 src/angle/patches/0009-ANGLE-Fix-winrt-backing-store-to-support-feature-lev.patch
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp b/src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
-index 8be6ae7..d41c5a4 100644
---- a/src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/entry_points_gles_2_0_ext.cpp
-@@ -659,7 +659,11 @@ void GL_APIENTRY BlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLi
- {
- if (!ValidateBlitFramebufferParameters(context, srcX0, srcY0, srcX1, srcY1,
- dstX0, dstY0, dstX1, dstY1, mask, filter,
-+#ifndef ANGLE_ENABLE_WINDOWS_STORE
- true))
-+#else
-+ false))
-+#endif
- {
- return;
- }
---
-1.9.5.msysgit.1
-
diff --git a/src/angle/patches/0009-ANGLE-glGetUniform-v-functions-to-work-properly.patch b/src/angle/patches/0009-ANGLE-glGetUniform-v-functions-to-work-properly.patch
new file mode 100644
index 0000000000..b53e11038b
--- /dev/null
+++ b/src/angle/patches/0009-ANGLE-glGetUniform-v-functions-to-work-properly.patch
@@ -0,0 +1,31 @@
+From 2d4a7aec7957e507cbf0b4b8dcf68abb26667e33 Mon Sep 17 00:00:00 2001
+From: Miikka Heikkinen <miikka.heikkinen@qt.io>
+Date: Mon, 9 May 2016 13:13:20 +0300
+Subject: [PATCH] Fix ANGLE glGetUniform*v functions to work properly array
+ uniforms
+
+glGetUniform*v functions are supposed to return just a single
+array element, so returning the whole array is always incorrect.
+
+Task-number: QTBUG-53072
+Change-Id: I22f05d420082d4d9de06d975b3d0f5e64d3e0c41
+---
+ src/3rdparty/angle/src/libANGLE/Program.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/3rdparty/angle/src/libANGLE/Program.cpp b/src/3rdparty/angle/src/libANGLE/Program.cpp
+index 748ceae..69497c4 100644
+--- a/src/3rdparty/angle/src/libANGLE/Program.cpp
++++ b/src/3rdparty/angle/src/libANGLE/Program.cpp
+@@ -2510,7 +2510,7 @@ void Program::getUniformInternal(GLint location, DestT *dataOut) const
+ return;
+ }
+
+- int components = VariableComponentCount(uniform.type) * uniform.elementCount();
++ int components = VariableComponentCount(uniform.type);
+
+ switch (componentType)
+ {
+--
+2.6.3.windows.1
+
diff --git a/src/angle/patches/0010-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch b/src/angle/patches/0010-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch
deleted file mode 100644
index 2927176815..0000000000
--- a/src/angle/patches/0010-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 00f0a46199b622b05619f56e29f172fb61fe6e82 Mon Sep 17 00:00:00 2001
-From: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
-Date: Mon, 23 Nov 2015 14:00:02 +0100
-Subject: [PATCH] ANGLE/D3D11: Suppress keyboard handling of DXGI.
-
-Set the DXGI_MWA_NO_ALT_ENTER to suppress the Alt-Enter shortcut
-causing the window to become full screen.
-
-Task-number: QTBUG-44904
-Change-Id: Ia4156ddee37a8a3da6e9e3130022c63a674f4429
----
- .../angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
-index 0a4f45b..696dfd7 100644
---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
-+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
-@@ -64,7 +64,13 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory
- swapChainDesc.Windowed = TRUE;
- swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
-
-- return factory->CreateSwapChain(device, &swapChainDesc, swapChain);
-+ const HRESULT result = factory->CreateSwapChain(device, &swapChainDesc, swapChain);
-+ if (SUCCEEDED(result))
-+ {
-+ const HRESULT makeWindowAssociationResult = factory->MakeWindowAssociation(mWindow, DXGI_MWA_NO_ALT_ENTER);
-+ UNUSED_TRACE_VARIABLE(makeWindowAssociationResult);
-+ }
-+ return result;
- }
- #endif
- }
---
-2.5.0.windows.1
-
diff --git a/src/angle/patches/0010-ANGLE-fixed-usage-of-shared-handles-for-WinRT-WinPho.patch b/src/angle/patches/0010-ANGLE-fixed-usage-of-shared-handles-for-WinRT-WinPho.patch
new file mode 100644
index 0000000000..8f17018e6e
--- /dev/null
+++ b/src/angle/patches/0010-ANGLE-fixed-usage-of-shared-handles-for-WinRT-WinPho.patch
@@ -0,0 +1,57 @@
+From 5cacddc702624d64a4917a7a704dbbb92aeba53c Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@qt.io>
+Date: Thu, 19 May 2016 10:55:46 +0200
+Subject: [PATCH] ANGLE: fixed usage of shared handles for WinRT/WinPhone
+ applications
+
+Both checks are not relevant in Qt's context and were skipped before but
+they sneaked back in with the latest ANGLE update.
+
+Change-Id: Ic44de5468a3254afd76ef4804d97d245676daeb1
+---
+ src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 3 +++
+ src/3rdparty/angle/src/libANGLE/validationEGL.cpp | 3 +++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+index 62badcc..0173311 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+@@ -2618,12 +2618,15 @@ bool Renderer11::getShareHandleSupport() const
+ return false;
+ }
+
++ // Qt: we don't care about the 9_3 limitation
++#if 0
+ // Also disable share handles on Feature Level 9_3, since it doesn't support share handles on RGBA8 textures/swapchains.
+ if (mRenderer11DeviceCaps.featureLevel <= D3D_FEATURE_LEVEL_9_3)
+ {
+ mSupportsShareHandles = false;
+ return false;
+ }
++#endif
+
+ // Find out which type of D3D11 device the Renderer11 is using
+ d3d11::ANGLED3D11DeviceType deviceType = getDeviceType();
+diff --git a/src/3rdparty/angle/src/libANGLE/validationEGL.cpp b/src/3rdparty/angle/src/libANGLE/validationEGL.cpp
+index 972f6a7..903f51b 100644
+--- a/src/3rdparty/angle/src/libANGLE/validationEGL.cpp
++++ b/src/3rdparty/angle/src/libANGLE/validationEGL.cpp
+@@ -642,11 +642,14 @@ Error ValidateCreatePbufferFromClientBuffer(Display *display, EGLenum buftype, E
+ return Error(EGL_BAD_ATTRIBUTE);
+ }
+
++// On Windows Store, we know the originating texture came from D3D11, so bypass this check
++#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+ const Caps &caps = display->getCaps();
+ if (textureFormat != EGL_NO_TEXTURE && !caps.textureNPOT && (!gl::isPow2(width) || !gl::isPow2(height)))
+ {
+ return Error(EGL_BAD_MATCH);
+ }
++#endif
+ }
+
+ return Error(EGL_SUCCESS);
+--
+2.7.0.windows.1
+
diff --git a/src/angle/patches/0012-ANGLE-Fix-initialization-of-zero-sized-window.patch b/src/angle/patches/0012-ANGLE-Fix-initialization-of-zero-sized-window.patch
new file mode 100644
index 0000000000..fe65af7948
--- /dev/null
+++ b/src/angle/patches/0012-ANGLE-Fix-initialization-of-zero-sized-window.patch
@@ -0,0 +1,32 @@
+From 79d2bac44cb2a0793c00886f0499422ab6ffa09c Mon Sep 17 00:00:00 2001
+From: Maurice Kalinowski <maurice.kalinowski@qt.io>
+Date: Fri, 12 Aug 2016 08:11:16 +0200
+Subject: [PATCH] ANGLE: Fix initialization of zero-sized window
+
+The clientRect might be empty when creating a window of zero size. The
+side effect of a division by zero is that matrix transformation fails
+and hence the swapchain gets into an invalid state.
+
+Change-Id: Idbaed72deadb7b87052ac27e194a40d1810e6f7a
+---
+ .../libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
+index d3ed35b..548b460 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
+@@ -322,8 +322,8 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device,
+
+ HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const Size &windowSize, const RECT &clientRect)
+ {
+- Size renderScale = {windowSize.Width / clientRect.right,
+- windowSize.Height / clientRect.bottom};
++ Size renderScale = {windowSize.Width / std::max(LONG(1), clientRect.right),
++ windowSize.Height / std::max(LONG(1), clientRect.bottom)};
+ // Setup a scale matrix for the swap chain
+ DXGI_MATRIX_3X2_F scaleMatrix = {};
+ scaleMatrix._11 = renderScale.Width;
+--
+2.9.2.windows.1
+