summaryrefslogtreecommitdiffstats
path: root/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch')
-rw-r--r--src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch265
1 files changed, 145 insertions, 120 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