From 0a7aebadfbb3534284546aa3ca8612314c08f136 Mon Sep 17 00:00:00 2001 From: Miguel Costa Date: Tue, 26 Jun 2018 16:56:45 +0200 Subject: Update ANGLE to chromium/3280 Change-Id: I0802c0d7486f772d361f87a544d6c5af937f4ca1 Reviewed-by: Friedemann Kleint --- .../0001-ANGLE-Improve-Windows-Phone-Support.patch | 464 ----------- ...LE-Use-pixel-sizes-in-the-XAML-swap-chain.patch | 135 ++++ src/angle/patches/0001-Fix-build-for-MinGW.patch | 26 + ...-Add-support-for-querying-platform-device.patch | 83 ++ ...Dynamically-load-D3D-compiler-from-a-list.patch | 62 -- .../patches/0002-ANGLE-Fix-build-for-ARM.patch | 43 + .../0002-ANGLE-Fix-compilation-with-MinGW.patch | 892 --------------------- ...-Add-support-for-querying-platform-device.patch | 81 -- ...indows-Store-D3D-Trim-and-Level-9-require.patch | 58 ++ ...-Windows-Phone-to-communicate-swap-region.patch | 146 ---- ...sage-of-shared-handles-for-WinRT-applicat.patch | 37 + .../0005-ANGLE-Fix-compilation-without-d3d11.patch | 59 -- ...E-Fix-initialization-of-zero-sized-window.patch | 32 + ...s-Store-D3D-Trim-and-Level-9-requirements.patch | 57 -- ...ix-flickering-on-resize-when-D3D9-is-used.patch | 165 ++++ ...-D3D11-Suppress-keyboard-handling-of-DXGI.patch | 45 -- .../0007-ANGLE-Fix-resizing-of-windows.patch | 48 ++ ...LE-Use-pixel-sizes-in-the-XAML-swap-chain.patch | 401 --------- ...-Do-full-screen-update-if-the-the-window-.patch | 40 + ...glGetUniform-v-functions-to-work-properly.patch | 31 - ...scanForWantedComponents-not-ignoring-attr.patch | 67 ++ ...le-multisampling-to-avoid-crash-in-Qt-app.patch | 41 + ...-usage-of-shared-handles-for-WinRT-WinPho.patch | 57 -- ...le-support-for-shared-handles-in-warp-mod.patch | 44 - ...E-Fix-initialization-of-zero-sized-window.patch | 32 - ...rash-with-ltcg-on-Visual-Studio-2015-Upda.patch | 110 --- ...ix-flickering-on-resize-when-D3D9-is-used.patch | 157 ---- ...GLE_D3D11_QDTD_AVAILABLE-to-check-struct-.patch | 32 - .../0016-ANGLE-Fix-resizing-of-windows.patch | 57 -- ...Remove-usage-of-auto_ptr-in-MacroExpander.patch | 31 - src/angle/src/common/common.pri | 3 +- src/angle/src/common/gles_common.pri | 314 ++++++-- .../src/compiler/preprocessor/preprocessor.pro | 7 +- src/angle/src/compiler/translator.pro | 87 +- src/angle/src/config.pri | 2 +- 35 files changed, 1076 insertions(+), 2870 deletions(-) delete mode 100644 src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch create mode 100644 src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch create mode 100644 src/angle/patches/0001-Fix-build-for-MinGW.patch create mode 100644 src/angle/patches/0002-ANGLE-Add-support-for-querying-platform-device.patch delete mode 100644 src/angle/patches/0002-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch create mode 100644 src/angle/patches/0002-ANGLE-Fix-build-for-ARM.patch delete mode 100644 src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch delete mode 100644 src/angle/patches/0003-ANGLE-Add-support-for-querying-platform-device.patch create mode 100644 src/angle/patches/0003-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-require.patch delete mode 100644 src/angle/patches/0004-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch create mode 100644 src/angle/patches/0004-ANGLE-fix-usage-of-shared-handles-for-WinRT-applicat.patch delete mode 100644 src/angle/patches/0005-ANGLE-Fix-compilation-without-d3d11.patch create mode 100644 src/angle/patches/0005-ANGLE-Fix-initialization-of-zero-sized-window.patch delete mode 100644 src/angle/patches/0006-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-requirements.patch create mode 100644 src/angle/patches/0006-ANGLE-Fix-flickering-on-resize-when-D3D9-is-used.patch delete mode 100644 src/angle/patches/0007-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch create mode 100644 src/angle/patches/0007-ANGLE-Fix-resizing-of-windows.patch delete mode 100644 src/angle/patches/0008-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch create mode 100644 src/angle/patches/0008-ANGLE-winrt-Do-full-screen-update-if-the-the-window-.patch delete mode 100644 src/angle/patches/0009-ANGLE-glGetUniform-v-functions-to-work-properly.patch create mode 100644 src/angle/patches/0009-Revert-Fix-scanForWantedComponents-not-ignoring-attr.patch create mode 100644 src/angle/patches/0010-ANGLE-Disable-multisampling-to-avoid-crash-in-Qt-app.patch delete mode 100644 src/angle/patches/0010-ANGLE-fixed-usage-of-shared-handles-for-WinRT-WinPho.patch delete mode 100644 src/angle/patches/0011-ANGLE-Disable-support-for-shared-handles-in-warp-mod.patch delete mode 100644 src/angle/patches/0012-ANGLE-Fix-initialization-of-zero-sized-window.patch delete mode 100644 src/angle/patches/0013-ANGLE-Fix-crash-with-ltcg-on-Visual-Studio-2015-Upda.patch delete mode 100644 src/angle/patches/0014-ANGLE-Fix-flickering-on-resize-when-D3D9-is-used.patch delete mode 100644 src/angle/patches/0015-ANGLE-Use-ANGLE_D3D11_QDTD_AVAILABLE-to-check-struct-.patch delete mode 100644 src/angle/patches/0016-ANGLE-Fix-resizing-of-windows.patch delete mode 100644 src/angle/patches/0017-Remove-usage-of-auto_ptr-in-MacroExpander.patch (limited to 'src/angle') diff --git a/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch b/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch deleted file mode 100644 index e8f11b5172..0000000000 --- a/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch +++ /dev/null @@ -1,464 +0,0 @@ -From bbc3a5f89821030dd2772cd8015070a3da9ad57e Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -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: 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 ++++- - .../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 40 ++++++++++++++++++++++ - .../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 ++- - .../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 ---- a/src/3rdparty/angle/src/common/platform.h -+++ b/src/3rdparty/angle/src/common/platform.h -@@ -68,7 +68,9 @@ - # if defined(ANGLE_ENABLE_WINDOWS_STORE) - # include - # if defined(_DEBUG) -+# if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP - # include -+# endif - # include - # 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 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 -@@ -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; - - // 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 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 -@@ -54,6 +54,7 @@ namespace rx - class NativeWindow - { - public: -+ enum RotationFlags { RotateNone = 0, RotateLeft = 1, RotateRight = 2 }; - explicit NativeWindow(EGLNativeWindowType window, - const egl::Config *config, - bool directComposition); -@@ -62,6 +63,9 @@ class NativeWindow - bool initialize(); - bool getClientRect(LPRECT rect); - bool isIconic(); -+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -+ RotationFlags rotationFlags() const; -+#endif - static bool isValidNativeWindow(EGLNativeWindowType window); - - 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 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 -@@ -10,7 +10,9 @@ - - #include - #include -+#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP - #include -+#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) -+#else - if (requestedMajorVersion == 9 && requestedMinorVersion == 3) -+#endif - { - 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(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 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 -@@ -222,8 +222,14 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe - const bool useSharedResource = !mNativeWindow.getNativeWindow() && mRenderer->getShareHandleSupport(); - - D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0}; -+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -+ const int textureLength = std::max(backbufferWidth, backbufferHeight); -+ offscreenTextureDesc.Width = textureLength; -+ offscreenTextureDesc.Height = textureLength; -+#else - offscreenTextureDesc.Width = backbufferWidth; - offscreenTextureDesc.Height = backbufferHeight; -+#endif - offscreenTextureDesc.Format = backbufferFormatInfo.texFormat; - offscreenTextureDesc.MipLevels = 1; - offscreenTextureDesc.ArraySize = 1; -@@ -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); -+ depthStencilTextureDesc.Width = textureLength; -+ depthStencilTextureDesc.Height = textureLength; -+#else - depthStencilTextureDesc.Width = backbufferWidth; - depthStencilTextureDesc.Height = backbufferHeight; -+#endif - depthStencilTextureDesc.Format = depthBufferFormatInfo.texFormat; - depthStencilTextureDesc.MipLevels = 1; - depthStencilTextureDesc.ArraySize = 1; -@@ -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 && mBackBufferSRView); - -@@ -479,6 +492,12 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight) - mFirstSwap = true; - - return resetOffscreenBuffers(backbufferWidth, backbufferHeight); -+#else -+ // Do nothing on Windows Phone apart from updating the internal buffer/width height -+ mWidth = backbufferWidth; -+ mHeight = backbufferHeight; -+ return EGL_SUCCESS; -+#endif - } - - 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; - -+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -+ const float dim = std::max(mWidth, mHeight); -+ float u1 = x / dim; -+ float v1 = y / dim; -+ float u2 = (x + width) / dim; -+ float v2 = (y + height) / dim; -+ -+ const NativeWindow::RotationFlags flags = mNativeWindow.rotationFlags(); -+ const bool rotateL = flags == NativeWindow::RotateLeft; -+ const bool rotateR = flags == NativeWindow::RotateRight; -+ d3d11::SetPositionTexCoordVertex(&vertices[0], x1, y1, rotateL ? u2 : u1, rotateR ? v2 : v1); -+ d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, rotateR ? u2 : u1, rotateL ? v1 : v2); -+ 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 - float u1 = x / float(mWidth); - float v1 = y / float(mHeight); - float u2 = (x + width) / float(mWidth); -@@ -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); -+#endif - - deviceContext->Unmap(mQuadVB, 0); - -@@ -752,8 +787,13 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width, - D3D11_VIEWPORT viewport; - viewport.TopLeftX = 0; - viewport.TopLeftY = 0; -+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -+ viewport.Width = (rotateL || rotateR) ? mHeight : mWidth; -+ viewport.Height = (rotateL || rotateR) ? mWidth : mHeight; -+#else - viewport.Width = static_cast(mWidth); - viewport.Height = static_cast(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 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 @@ - - #include "libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h" - --#include -- - using namespace ABI::Windows::Foundation::Collections; - - namespace rx -@@ -21,6 +19,7 @@ CoreWindowNativeWindow::~CoreWindowNativeWindow() - - bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet *propertySet) - { -+ mOrientationChangedEventToken.value = 0; - ComPtr props = propertySet; - ComPtr win = window; - SIZE swapChainSize = {}; -@@ -100,6 +99,16 @@ bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet - - if (SUCCEEDED(result)) - { -+ ComPtr displayInformation; -+ result = GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayInformation).Get(), &displayInformation); -+ if (SUCCEEDED(result)) -+ { -+ result = displayInformation->GetForCurrentView(&mDisplayInformation); -+ } -+ } -+ -+ if (SUCCEEDED(result)) -+ { - mNewClientRect = mClientRect; - mClientRectChanged = false; - return registerForSizeChangeEvents(); -@@ -117,6 +126,15 @@ bool CoreWindowNativeWindow::registerForSizeChangeEvents() - result = mCoreWindow->add_SizeChanged(sizeChangedHandler.Get(), &mSizeChangedEventToken); - } - -+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -+ ComPtr orientationChangedHandler; -+ result = sizeChangedHandler.As(&orientationChangedHandler); -+ if (SUCCEEDED(result)) -+ { -+ result = mDisplayInformation->add_OrientationChanged(orientationChangedHandler.Get(), &mOrientationChangedEventToken); -+ } -+#endif -+ - if (SUCCEEDED(result)) - { - return true; -@@ -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, -@@ -168,7 +195,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device, - if (SUCCEEDED(result)) - { - --#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -+#if 0 //(WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) // Qt: allow Windows Phone to resize, but don't modify the backing texture in the swap chain. - // Test if swapchain supports resize. On Windows Phone devices, this will return DXGI_ERROR_UNSUPPORTED. On - // 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 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 @@ - #include "libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h" - - #include -+#include - - typedef ABI::Windows::Foundation::__FITypedEventHandler_2_Windows__CUI__CCore__CCoreWindow_Windows__CUI__CCore__CWindowSizeChangedEventArgs_t IWindowSizeChangedEventHandler; -+typedef ABI::Windows::Foundation::__FITypedEventHandler_2_Windows__CGraphics__CDisplay__CDisplayInformation_IInspectable_t IDisplayOrientationEventHandler; - - namespace rx - { -@@ -42,11 +44,13 @@ class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enabl - private: - ComPtr mCoreWindow; - ComPtr> mPropertyMap; -+ ComPtr mDisplayInformation; -+ EventRegistrationToken mOrientationChangedEventToken; - }; - - [uuid(7F924F66-EBAE-40E5-A10B-B8F35E245190)] - class CoreWindowSizeChangedHandler : -- public Microsoft::WRL::RuntimeClass, IWindowSizeChangedEventHandler> -+ public Microsoft::WRL::RuntimeClass, IWindowSizeChangedEventHandler, IDisplayOrientationEventHandler> - { - public: - 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))) -+ { -+ 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 host = mHost.lock(); -+ if (host) -+ { -+ host->setRotationFlags(flags); -+ } -+ #endif -+ return S_OK; -+ } -+ -+ - private: - std::weak_ptr 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 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 -@@ -80,6 +80,18 @@ bool NativeWindow::getClientRect(RECT *rect) - return false; - } - -+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -+NativeWindow::RotationFlags NativeWindow::rotationFlags() const -+{ -+ if (mImpl) -+ { -+ return mImpl->rotationFlags(); -+ } -+ -+ return NativeWindow::RotateNone; -+} -+#endif -+ - bool NativeWindow::isIconic() - { - 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 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 -@@ -36,7 +36,8 @@ class InspectableNativeWindow - mSwapChainScale(1.0f), - mClientRectChanged(false), - mClientRect({0,0,0,0}), -- mNewClientRect({0,0,0,0}) -+ mNewClientRect({0,0,0,0}), -+ mRotationFlags(NativeWindow::RotateNone) - { - mSizeChangedEventToken.value = 0; - } -@@ -94,6 +95,16 @@ class InspectableNativeWindow - } - } - -+ NativeWindow::RotationFlags rotationFlags() const -+ { -+ return mRotationFlags; -+ } -+ -+ void setRotationFlags(NativeWindow::RotationFlags flags) -+ { -+ mRotationFlags = flags; -+ } -+ - protected: - virtual HRESULT scaleSwapChain(const SIZE &windowSize, const RECT &clientRect) = 0; - -@@ -104,6 +115,7 @@ class InspectableNativeWindow - RECT mClientRect; - RECT mNewClientRect; - bool mClientRectChanged; -+ NativeWindow::RotationFlags mRotationFlags; - - EventRegistrationToken mSizeChangedEventToken; - }; -diff --git a/src/3rdparty/angle/src/libANGLE/validationEGL.cpp b/src/3rdparty/angle/src/libANGLE/validationEGL.cpp -index bff3c94..972f6a7 100644 ---- a/src/3rdparty/angle/src/libANGLE/validationEGL.cpp -+++ b/src/3rdparty/angle/src/libANGLE/validationEGL.cpp -@@ -269,7 +269,7 @@ Error ValidateCreateContext(Display *display, Config *configuration, gl::Context - return Error(EGL_BAD_CONFIG); - } - -- if (clientMajorVersion == 3 && !(configuration->conformant & EGL_OPENGL_ES3_BIT_KHR)) -+ if (clientMajorVersion == 3 && !(configuration->conformant & EGL_OPENGL_ES3_BIT_KHR) && !(configuration->configCaveat & EGL_NON_CONFORMANT_CONFIG)) - { - return Error(EGL_BAD_CONFIG); - } -@@ -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(); - - 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 - #include "common/platform.h" - --#if _WIN32_WINNT_WINBLUE -+#if _WIN32_WINNT_WINBLUE && WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP - #include - #endif - --- -2.7.0.windows.1 - diff --git a/src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch b/src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch new file mode 100644 index 0000000000..618ad08b4b --- /dev/null +++ b/src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch @@ -0,0 +1,135 @@ +From b1f0b50c19ec17df554faa1335d2b989e262b831 Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Wed, 22 Aug 2018 09:21:04 +0200 +Subject: [PATCH 1/8] 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. + +In order to achieve proper scaling, the scale factor has to be initialized +properly in InspectableNativeWindow. + +This change only affects Windows Runtime targets. + +Change-Id: I92a365f33752ed49c960e390bbf89cc33ccc8004 +--- + .../d3d/d3d11/winrt/CoreWindowNativeWindow.cpp | 23 ------------------- + .../d3d/d3d11/winrt/CoreWindowNativeWindow.h | 2 -- + .../d3d/d3d11/winrt/InspectableNativeWindow.cpp | 26 +++++++++++++++++++--- + .../d3d/d3d11/winrt/InspectableNativeWindow.h | 7 +++++- + 4 files changed, 29 insertions(+), 29 deletions(-) + +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 dd37ace87e..1ef90e7b09 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 +@@ -205,27 +205,4 @@ HRESULT GetCoreWindowSizeInPixels(const ComPtr displayProperties; +- +- 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 96 dpi as a default if display properties cannot be obtained. +- return 96.0f; +-} +- +-float ConvertDipsToPixels(float dips) +-{ +- static const float dipsPerInch = 96.0f; +- return dips * GetLogicalDpi() / dipsPerInch; +-} + } +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 d43bf0ba5f..21855c2c3b 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,8 +19,6 @@ typedef ABI::Windows::Foundation::__FITypedEventHandler_2_Windows__CUI__CCore__C + + namespace rx + { +-float ConvertDipsToPixels(float dips); +- + class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enable_shared_from_this + { + public: +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 cc81521320..1bd796e58f 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 +@@ -270,8 +270,28 @@ HRESULT GetOptionalSinglePropertyValue(const ComPtr(ConvertDipsToPixels(size.Width)), ++ static_cast(ConvertDipsToPixels(size.Height))}; ++} ++ ++float GetLogicalDpi() ++{ ++ ComPtr displayProperties; ++ float dpi = 96.0f; ++ ++ if (SUCCEEDED(GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(), displayProperties.GetAddressOf()))) ++ { ++ if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi))) ++ { ++ return dpi; ++ } ++ } ++ return dpi; ++} ++ ++float ConvertDipsToPixels(float dips) ++{ ++ static const float dipsPerInch = 96.0f; ++ return lround((dips * GetLogicalDpi() / dipsPerInch)); + } + } +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 3e67269f36..d81c3e5fb9 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 +@@ -30,6 +30,9 @@ using namespace ABI::Windows::Foundation::Collections; + + namespace rx + { ++float ConvertDipsToPixels(float dips); ++float GetLogicalDpi(); ++ + class InspectableNativeWindow + { + public: +@@ -37,12 +40,14 @@ class InspectableNativeWindow + mSupportsSwapChainResize(true), + mSwapChainSizeSpecified(false), + mSwapChainScaleSpecified(false), +- mSwapChainScale(1.0f), + mClientRectChanged(false), + mClientRect({0,0,0,0}), + mNewClientRect({0,0,0,0}) + { + mSizeChangedEventToken.value = 0; ++ mSwapChainScale = 96.0f / GetLogicalDpi(); ++ if (mSwapChainScale != 1.0f) ++ mSwapChainScaleSpecified = true; + } + virtual ~InspectableNativeWindow(){} + +-- +2.15.0.windows.1 + diff --git a/src/angle/patches/0001-Fix-build-for-MinGW.patch b/src/angle/patches/0001-Fix-build-for-MinGW.patch new file mode 100644 index 0000000000..186acd39dc --- /dev/null +++ b/src/angle/patches/0001-Fix-build-for-MinGW.patch @@ -0,0 +1,26 @@ +From 75f877269a86aa111afbf816be14ef6c36ea6478 Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Mon, 2 Jul 2018 12:56:39 +0200 +Subject: [PATCH] Fix build for MinGW + +SSE is not properly supported for Mingw yet. +--- + src/common/platform.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/srccommon/platform.h +index 0065fd2..47cd57b 100644 +--- a/src/3rdparty/angle/src/common/platform.h ++++ b/src/3rdparty/angle/src/common/platform.h +@@ -86,7 +86,7 @@ + #if defined(_MSC_VER) && !defined(_M_ARM) + #include + #define ANGLE_USE_SSE +-#elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) ++#elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) && !defined(__MINGW32__) + #include + #define ANGLE_USE_SSE + #endif +-- +2.10.2.windows.1 + diff --git a/src/angle/patches/0002-ANGLE-Add-support-for-querying-platform-device.patch b/src/angle/patches/0002-ANGLE-Add-support-for-querying-platform-device.patch new file mode 100644 index 0000000000..d548ce465f --- /dev/null +++ b/src/angle/patches/0002-ANGLE-Add-support-for-querying-platform-device.patch @@ -0,0 +1,83 @@ +From 2f2aabec376cb749a7d0db9e7f754fbfd28b8a72 Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Wed, 22 Aug 2018 12:58:13 +0200 +Subject: [PATCH 2/8] 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(). +As that extension is not supported by ANGLE, this patch adds similar +functionality to the existing eglQuerySurfacePointerANGLE API. When +EGL_DEVICE_EXT is passed as the queried attribute, the underlying +D3D/DXGI device pointer is passed back to the caller via the value +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: Ib3dfd3edc47dbcc02b07f71980ba785508f2ee57 +--- + 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, 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 8e78b71a36..ceb022d14c 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp +@@ -351,6 +351,10 @@ egl::Error SurfaceD3D::querySurfacePointerANGLE(EGLint attribute, void **value) + { + *value = mSwapChain->getKeyedMutex(); + } ++ else if (attribute == EGL_DEVICE_EXT) ++ { ++ *value = mSwapChain->getDevice(); ++ } + else UNREACHABLE(); + + return egl::NoError(); +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h +index 81c3d13da4..017737b878 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h +@@ -58,6 +58,7 @@ class SwapChainD3D : angle::NonCopyable + EGLint width, + EGLint height) = 0; + virtual void recreate() = 0; ++ virtual void *getDevice() { return nullptr; } + + 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 19bcaae776..05bb5d9863 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp +@@ -1007,6 +1007,11 @@ void SwapChain11::recreate() + // possibly should use this method instead of reset + } + ++void *rx::SwapChain11::getDevice() ++{ ++ return mRenderer->getDevice(); ++} ++ + RenderTargetD3D *SwapChain11::getColorRenderTarget() + { + return &mColorRenderTarget; +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 5ce2af193d..eca068210b 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h +@@ -61,6 +61,8 @@ class SwapChain11 final : public SwapChainD3D + void *getKeyedMutex() override; + EGLint getSamples() const { return mEGLSamples; } + ++ void *getDevice() override; ++ + egl::Error getSyncValues(EGLuint64KHR *ust, EGLuint64KHR *msc, EGLuint64KHR *sbc) override; + + private: +-- +2.15.0.windows.1 + diff --git a/src/angle/patches/0002-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch b/src/angle/patches/0002-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch deleted file mode 100644 index 9503ae1090..0000000000 --- a/src/angle/patches/0002-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 7dd1de8a519324e6ec7dbfede1b446980cb5954f Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -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: Ic6d6e37095b838b8a636b029b72467f156b850cb ---- - .../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 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 -+ - #if ANGLE_APPEND_ASSEMBLY_TO_SHADER_DEBUG_INFO == ANGLE_ENABLED - namespace - { -@@ -128,6 +132,28 @@ gl::Error HLSLCompiler::initialize() - } - #endif // ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES - -+ // Load the compiler DLL specified by the environment, or default to QT_D3DCOMPILER_DLL -+ const wchar_t *defaultCompiler = _wgetenv(L"QT_D3DCOMPILER_DLL"); -+ if (!defaultCompiler) -+ defaultCompiler = QT_D3DCOMPILER_DLL; -+ -+ const wchar_t *compilerDlls[] = { -+ defaultCompiler, -+ L"d3dcompiler_47.dll", -+ L"d3dcompiler_46.dll", -+ L"d3dcompiler_43.dll", -+ 0 -+ }; -+ -+ // Load the first available known compiler DLL -+ for (int i = 0; compilerDlls[i]; ++i) -+ { -+ mD3DCompilerModule = LoadLibrary(compilerDlls[i]); -+ if (mD3DCompilerModule) -+ break; -+ } -+ -+ - if (!mD3DCompilerModule) - { - // Load the version of the D3DCompiler DLL associated with the Direct3D version ANGLE was built with. --- -2.7.0.windows.1 - diff --git a/src/angle/patches/0002-ANGLE-Fix-build-for-ARM.patch b/src/angle/patches/0002-ANGLE-Fix-build-for-ARM.patch new file mode 100644 index 0000000000..04517a116e --- /dev/null +++ b/src/angle/patches/0002-ANGLE-Fix-build-for-ARM.patch @@ -0,0 +1,43 @@ +From 416fb93dae5009bb51da9f6720a95918a2c79e78 Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Fri, 17 Aug 2018 09:54:15 +0200 +Subject: [PATCH] ANGLE: Fix build for ARM + +__popcnt is not available when building for ARM. This patch uses the +approach that is also used in Microsoft's ANGLE fork. + +Change-Id: I98bac36a3b36b0aa81f3b483d3d12cce9f6c5c87 +--- + src/3rdparty/angle/src/common/mathutil.h | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/3rdparty/angle/src/common/mathutil.h b/src/3rdparty/angle/src/common/mathutil.h +index ca6efc567f..372e432066 100644 +--- a/src/3rdparty/angle/src/common/mathutil.h ++++ b/src/3rdparty/angle/src/common/mathutil.h +@@ -884,6 +884,14 @@ inline uint32_t BitfieldReverse(uint32_t value) + + // Count the 1 bits. + #if defined(ANGLE_PLATFORM_WINDOWS) ++#if defined(_M_ARM) ++inline int BitCount(uint32_t bits) ++{ ++ bits = bits - ((bits >> 1) & 0x55555555); ++ bits = (bits & 0x33333333) + ((bits >> 2) & 0x33333333); ++ return (((bits + (bits >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24; ++} ++#else // _M_ARM + inline int BitCount(uint32_t bits) + { + return static_cast(__popcnt(bits)); +@@ -893,6 +901,7 @@ inline int BitCount(uint64_t bits) + { + return static_cast(__popcnt64(bits)); + } ++#endif // !_M_ARM + #endif // defined(ANGLE_IS_64_BIT_CPU) + #endif // defined(ANGLE_PLATFORM_WINDOWS) + +-- +2.15.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 deleted file mode 100644 index f42ff2141b..0000000000 --- a/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch +++ /dev/null @@ -1,892 +0,0 @@ -From c6b9e598384563a641efdff56fdbdb0d7a561ec4 Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -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. -It additionally adds a few missing includes needed for compilation. - -Change-Id: I254c208209c0071fae5efb6727f2b3cfd5542da6 ---- - 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/platform.h b/src/3rdparty/angle/src/common/platform.h -index 4e3851c..be4cb94 100644 ---- a/src/3rdparty/angle/src/common/platform.h -+++ b/src/3rdparty/angle/src/common/platform.h -@@ -59,9 +59,17 @@ - # if defined(ANGLE_ENABLE_D3D11) - # include - # include --# include - # include -+# if defined(__MINGW32__) && !defined(__d3d11sdklayers_h__) -+# define ANGLE_MINGW32_COMPAT -+# endif -+# if defined(_MSC_VER) && _MSC_VER >= 1800 -+# define ANGLE_ENABLE_D3D11_1 -+# endif -+# if defined(ANGLE_ENABLE_D3D11_1) -+# include - # include -+# endif - # include - # endif - -diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp -index 0d298bb..df0257e 100644 ---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp -+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp -@@ -25,6 +25,15 @@ namespace - - #define CREATE_COMPILER_FLAG_INFO(flag) { flag, #flag } - -+#if defined(ANGLE_MINGW32_COMPAT) -+#ifndef D3DCOMPILE_RESERVED16 -+#define D3DCOMPILE_RESERVED16 0x10000 -+#endif -+#ifndef D3DCOMPILE_RESERVED17 -+#define D3DCOMPILE_RESERVED17 0x20000 -+#endif -+#endif -+ - struct CompilerFlagInfo - { - 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 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 -@@ -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 { -+ D3D11_MAP_FLAG_DO_NOT_WAIT = 0x100000 -+} D3D11_MAP_FLAG; -+#endif -+ - 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 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 -@@ -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) - ID3D11DeviceContext1 *deviceContext1 = mRenderer->getDeviceContext1IfSupported(); -+#endif - ID3D11Device *device = mRenderer->getDevice(); - - 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) - { - // We shouldn't reach here if deviceContext1 is unavailable. -@@ -361,6 +364,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl - deviceContext1->ClearView(framebufferRTV, clearValues, &rect, 1); - } - 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 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() - { - if (mInitialized) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - SafeRelease(mUserDefinedAnnotation); -+#endif - - #if !defined(ANGLE_ENABLE_WINDOWS_STORE) - FreeLibrary(mD3d11Module); -@@ -41,7 +43,9 @@ void DebugAnnotator11::beginEvent(const wchar_t *eventName) - - if (mUserDefinedAnnotation != nullptr) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - mUserDefinedAnnotation->BeginEvent(eventName); -+#endif - } - } - -@@ -51,7 +55,9 @@ void DebugAnnotator11::endEvent() - - if (mUserDefinedAnnotation != nullptr) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - mUserDefinedAnnotation->EndEvent(); -+#endif - } - } - -@@ -61,7 +67,9 @@ void DebugAnnotator11::setMarker(const wchar_t *markerName) - - if (mUserDefinedAnnotation != nullptr) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - mUserDefinedAnnotation->SetMarker(markerName); -+#endif - } - } - -@@ -137,8 +145,10 @@ void DebugAnnotator11::initializeDevice() - ASSERT(SUCCEEDED(hr)); - if (SUCCEEDED(hr)) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - mUserDefinedAnnotation = d3d11::DynamicCastComObject(context); - ASSERT(mUserDefinedAnnotation != nullptr); -+#endif - mInitialized = true; - } - -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 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 @@ - - #include "common/debug.h" - -+struct ID3DUserDefinedAnnotation; -+ - 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 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,20 @@ - - #include - -+#if defined(ANGLE_MINGW32_COMPAT) -+typedef struct D3D11_QUERY_DATA_SO_STATISTICS { -+ UINT64 NumPrimitivesWritten; -+ UINT64 PrimitivesStorageNeeded; -+} D3D11_QUERY_DATA_SO_STATISTICS; -+#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 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 -@@ -10,7 +10,7 @@ - - #include - #include --#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP -+#if !defined(ANGLE_MINGW32_COMPAT) && WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP - #include - #endif - -@@ -89,6 +89,7 @@ enum - MAX_TEXTURE_IMAGE_UNITS_VTF_SM4 = 16 - }; - -+#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 - - enum ANGLEFeatureLevel - { -@@ -369,8 +371,10 @@ Renderer11::Renderer11(egl::Display *display) - : RendererD3D(display), - mStateCache(this), - mStateManager(this), -- mLastHistogramUpdateTime(ANGLEPlatformCurrent()->monotonicallyIncreasingTime()), -- mDebug(nullptr) -+ mLastHistogramUpdateTime(ANGLEPlatformCurrent()->monotonicallyIncreasingTime()) -+#if !defined(ANGLE_MINGW32_COMPAT) -+ ,mDebug(nullptr) -+#endif - { - 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(mDeviceContext); -+#endif - - IDXGIDevice *dxgiDevice = NULL; - result = mDevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice); -@@ -595,6 +601,7 @@ egl::Error Renderer11::initialize() - - SafeRelease(dxgiDevice); - -+#if defined(ANGLE_ENABLE_D3D11_1) - IDXGIAdapter2 *dxgiAdapter2 = d3d11::DynamicCastComObject(mDxgiAdapter); - - // 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); - } - -+#if defined(ANGLE_ENABLE_D3D11_1) - SafeRelease(dxgiAdapter2); -+#endif - - 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) - { -@@ -671,6 +682,7 @@ egl::Error Renderer11::initialize() - #if !defined(NDEBUG) - mDebug = d3d11::DynamicCastComObject(mDevice); - #endif -+#endif // !ANGLE_MINGW32_COMPAT - - initializeDevice(); - -@@ -859,6 +871,7 @@ void Renderer11::populateRenderer11DeviceCaps() - { - HRESULT hr = S_OK; - -+#if defined(ANGLE_ENABLE_D3D11_1) - if (mDeviceContext1) - { - D3D11_FEATURE_DATA_D3D11_OPTIONS d3d11Options; -@@ -869,6 +882,7 @@ void Renderer11::populateRenderer11DeviceCaps() - mRenderer11DeviceCaps.supportsConstantBufferOffsets = (d3d11Options.ConstantBufferOffsetting != FALSE); - } - } -+#endif - - 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(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 (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0) - { - UINT firstConstant = 0, numConstants = 0; -@@ -1318,6 +1335,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, - 1, &constantBuffer, &firstConstant, &numConstants); - } - else -+#endif - { - 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 (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0) - { - UINT firstConstant = 0, numConstants = 0; -@@ -1379,6 +1398,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, - 1, &constantBuffer, &firstConstant, &numConstants); - } - else -+#endif - { - mDeviceContext->PSSetConstantBuffers( - getReservedFragmentUniformBuffers() + -@@ -2448,7 +2468,9 @@ void Renderer11::release() - SafeRelease(mDxgiFactory); - SafeRelease(mDxgiAdapter); - -+#if defined(ANGLE_ENABLE_D3D11_1) - SafeRelease(mDeviceContext1); -+#endif - - if (mDeviceContext) - { -@@ -2458,7 +2480,9 @@ void Renderer11::release() - } - - SafeRelease(mDevice); -+#if !defined(ANGLE_MINGW32_COMPAT) - SafeRelease(mDebug); -+#endif - - if (mD3d11Module) - { -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 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 -@@ -28,6 +28,8 @@ class FramebufferAttachment; - struct ImageIndex; - } - -+struct ID3D11DeviceContext1; -+ - namespace rx - { - -@@ -442,7 +444,9 @@ class Renderer11 : public RendererD3D - DXGI_ADAPTER_DESC mAdapterDescription; - char mDescription[128]; - DXGIFactory *mDxgiFactory; -+#if !defined(ANGLE_MINGW32_COMPAT) - ID3D11Debug *mDebug; -+#endif - - std::vector 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(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 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 -@@ -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 -+#endif -+#ifndef D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT -+# define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1 -+#endif -+#ifndef D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT -+# define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4 -+#endif -+#ifndef D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT -+# define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535 -+#endif -+#ifndef D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT -+# define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575 -+#endif -+#ifndef D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION -+# define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512 -+#endif -+#ifndef D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION -+# define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096 -+#endif -+#ifndef D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION -+# define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048 -+#endif -+#ifndef D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION -+# define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256 -+#endif -+#ifndef D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION -+# define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096 -+#endif -+#ifndef D3D11_REQ_TEXTURECUBE_DIMENSION -+# define D3D11_REQ_TEXTURECUBE_DIMENSION 16384 -+#endif -+#ifndef D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION -+# define D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION 2048 -+#endif -+#ifndef D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION -+# define D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 2048 -+#endif -+#ifndef D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP -+# define D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP 32 -+#endif -+#ifndef D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP -+# define D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP 32 -+#endif -+#ifndef D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT -+# define D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT 32 -+#endif -+#ifndef D3D11_STANDARD_VERTEX_ELEMENT_COUNT -+# define D3D11_STANDARD_VERTEX_ELEMENT_COUNT 32 -+#endif -+#ifndef D3D10_1_SO_BUFFER_SLOT_COUNT -+# define D3D10_1_SO_BUFFER_SLOT_COUNT 4 -+#endif -+#ifndef D3D11_SO_BUFFER_SLOT_COUNT -+# define D3D11_SO_BUFFER_SLOT_COUNT 4 -+#endif -+#ifndef D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT -+# define D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT 14 -+#endif -+#ifndef D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT -+# define D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT 16 -+#endif -+#ifndef D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE -+# define D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE -8 -+#endif -+#ifndef D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE -+# define D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE 7 -+#endif -+#ifndef D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT -+# define D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT 4096 -+#endif -+#ifndef D3D11_PS_INPUT_REGISTER_COUNT -+# define D3D11_PS_INPUT_REGISTER_COUNT 32 -+#endif -+#ifndef D3D10_1_VS_OUTPUT_REGISTER_COUNT -+# define D3D10_1_VS_OUTPUT_REGISTER_COUNT 32 -+#endif -+#if defined(ANGLE_MINGW32_COMPAT) -+static const IID WKPDID_D3DDebugObjectName = { 0x429b8c22, 0x9188, 0x4b0c, 0x87, 0x42, 0xac, 0xb0, 0xbf, 0x85, 0xc2, 0x00 }; -+#endif -+ - namespace rx - { - -@@ -601,7 +683,9 @@ static size_t GetMaximumCubeMapTextureSize(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_TEXTURECUBE_DIMENSION; - - case D3D_FEATURE_LEVEL_10_1: -@@ -619,7 +703,9 @@ static size_t GetMaximum2DTextureArraySize(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_ARRAY_AXIS_DIMENSION; - - case D3D_FEATURE_LEVEL_10_1: -@@ -1266,7 +1352,9 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device) - - IDXGIDevice *dxgiDevice = nullptr; - IDXGIAdapter *dxgiAdapter = nullptr; -+#if defined(ANGLE_ENABLE_D3D11_1) - IDXGIAdapter2 *dxgiAdapter2 = nullptr; -+#endif - - ANGLED3D11DeviceType retDeviceType = ANGLE_D3D11_DEVICE_TYPE_UNKNOWN; - -@@ -1277,6 +1365,7 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device) - if (SUCCEEDED(hr)) - { - std::wstring adapterString; -+#if defined(ANGLE_ENABLE_D3D11_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 - { - DXGI_ADAPTER_DESC adapterDesc; - dxgiAdapter->GetDesc(&adapterDesc); -@@ -1320,7 +1410,9 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device) - - SafeRelease(dxgiDevice); - SafeRelease(dxgiAdapter); -+#if defined(ANGLE_ENABLE_D3D11_1) - SafeRelease(dxgiAdapter2); -+#endif - - 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" - - #include -+#if !defined(__MINGW32__) - #include -+#endif - - namespace rx - { -@@ -31,9 +33,11 @@ NativeWindow::NativeWindow(EGLNativeWindowType window, - - NativeWindow::~NativeWindow() - { -+#if !defined(__MINGW32__) - SafeRelease(mCompositionTarget); - SafeRelease(mDevice); - SafeRelease(mVisual); -+#endif - } - - bool NativeWindow::initialize() -@@ -66,6 +70,7 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory - return E_INVALIDARG; - } - -+#if !defined(__MINGW32__) - if (mDirectComposition) - { - HMODULE dcomp = ::GetModuleHandle(TEXT("dcomp.dll")); -@@ -171,6 +176,7 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory - SafeRelease(factory2); - return result; - } -+#endif // !__MINGW32__ - - DXGI_SWAP_CHAIN_DESC swapChainDesc = {}; - swapChainDesc.BufferCount = 1; -@@ -202,9 +208,11 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory - - void NativeWindow::commitChange() - { -+#if !defined(__MINGW32__) - if (mDevice) - { - mDevice->Commit(); - } -+#endif - } - } -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 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 -@@ -193,7 +193,7 @@ egl::Error Renderer9::initialize() - { - TRACE_EVENT0("gpu.angle", "D3d9Ex_QueryInterface"); - ASSERT(mD3d9Ex); -- mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast(&mD3d9)); -+ mD3d9Ex->QueryInterface(IID_IDirect3D9, reinterpret_cast(&mD3d9)); - ASSERT(mD3d9); - } - else -@@ -301,7 +301,7 @@ egl::Error Renderer9::initialize() - if (mD3d9Ex) - { - 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.7.0.windows.1 - diff --git a/src/angle/patches/0003-ANGLE-Add-support-for-querying-platform-device.patch b/src/angle/patches/0003-ANGLE-Add-support-for-querying-platform-device.patch deleted file mode 100644 index ed0f7247cb..0000000000 --- a/src/angle/patches/0003-ANGLE-Add-support-for-querying-platform-device.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 037550af14ce0ecebad96d637d7185b60d760b5d Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -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(). -As that extension is not supported by ANGLE, this patch adds similar -functionality to the existing eglQuerySurfacePointerANGLE API. When -EGL_DEVICE_EXT is passed as the queried attribute, the underlying -D3D/DXGI device pointer is passed back to the caller via the value -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: Ib3dfd3edc47dbcc02b07f71980ba785508f2ee57 ---- - 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, 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 93f6990..0347828 100644 ---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp -+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp -@@ -334,6 +334,10 @@ egl::Error SurfaceD3D::querySurfacePointerANGLE(EGLint attribute, void **value) - { - *value = mSwapChain->getKeyedMutex(); - } -+ else if (attribute == EGL_DEVICE_EXT) -+ { -+ *value = mSwapChain->getDevice(); -+ } - 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 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 - virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval) = 0; - virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height) = 0; - virtual void recreate() = 0; -+ virtual void *getDevice() { return NULL; } - - 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 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 -@@ -915,4 +915,9 @@ void SwapChain11::recreate() - // possibly should use this method instead of reset - } - -+void *rx::SwapChain11::getDevice() -+{ -+ return mRenderer->getDevice(); -+} -+ - } -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 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 -@@ -48,6 +48,8 @@ class SwapChain11 : public SwapChainD3D - EGLint getHeight() const { return mHeight; } - void *getKeyedMutex() override { return mKeyedMutex; } - -+ virtual void *getDevice(); -+ - private: - void release(); - void initPassThroughResources(); --- -2.7.0.windows.1 - diff --git a/src/angle/patches/0003-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-require.patch b/src/angle/patches/0003-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-require.patch new file mode 100644 index 0000000000..1f51619f18 --- /dev/null +++ b/src/angle/patches/0003-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-require.patch @@ -0,0 +1,58 @@ +From 9b37d0fa0e9eaab3d8bb1dcbba85c072302ee08c Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Wed, 22 Aug 2018 13:01:10 +0200 +Subject: [PATCH 3/8] 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 bd14f4de2a..f696e360ef 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp +@@ -523,7 +523,20 @@ Renderer11::Renderer11(egl::Display *display) + + if (requestedMajorVersion == 9 && requestedMinorVersion == 3) + { +- 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 = static_cast(attributes.get( +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 b863817920..ee8cdb94dc 100644 +--- a/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp ++++ b/src/3rdparty/angle/src/libGLESv2/entry_points_egl_ext.cpp +@@ -54,6 +54,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.15.0.windows.1 + diff --git a/src/angle/patches/0004-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch b/src/angle/patches/0004-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch deleted file mode 100644 index 4d7080e77d..0000000000 --- a/src/angle/patches/0004-ANGLE-Allow-Windows-Phone-to-communicate-swap-region.patch +++ /dev/null @@ -1,146 +0,0 @@ -From a0c84bec77dd2dab4dd87add17dd1f21e6d8087d Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -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 -rendered in landscape or portrait, causing rendering glitches when the -orientation changes. The rotation flags are utilized in a few additional -places now to fix some corner cases where the rotation was not applied. - -This patch should be squashed into "ANGLE-Improve-Windows-Phone-Support" -during the next ANGLE rebase. - -Task-number: QTBUG-44333 -Task-number: QTBUG-43502 - -Change-Id: I2b35c41ed17004524f383350253a936e6bf85117 ---- - .../angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp | 2 ++ - .../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 28 +++++++++++++--------- - .../d3d/d3d11/winrt/CoreWindowNativeWindow.cpp | 5 ++-- - .../angle/src/libGLESv2/entry_points_egl_ext.cpp | 2 ++ - 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 0347828..3d27548 100644 ---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp -+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp -@@ -211,6 +211,7 @@ egl::Error SurfaceD3D::swapRect(EGLint x, EGLint y, EGLint width, EGLint height) - return egl::Error(EGL_SUCCESS); - } - -+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) || (defined(ANGLE_ENABLE_WINDOWS_STORE) && WINAPI_FAMILY == WINAPI_FAMILY_PC_APP) // Qt WP: eglPostSubBufferNV comes here - if (x + width > mWidth) - { - width = mWidth - x; -@@ -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) - { -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 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 -@@ -717,18 +717,18 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width, - - d3d11::PositionTexCoordVertex *vertices = static_cast(mappedResource.pData); - -+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) - // Create a quad in homogeneous coordinates -- float x1 = (x / float(mWidth)) * 2.0f - 1.0f; -- float y1 = (y / float(mHeight)) * 2.0f - 1.0f; -- float x2 = ((x + width) / float(mWidth)) * 2.0f - 1.0f; -- float y2 = ((y + height) / float(mHeight)) * 2.0f - 1.0f; -+ float x1 = -1.0f; -+ float y1 = -1.0f; -+ float x2 = 1.0f; -+ float y2 = 1.0f; - --#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) - const float dim = std::max(mWidth, mHeight); -- float u1 = x / dim; -- float v1 = y / dim; -- float u2 = (x + width) / dim; -- float v2 = (y + height) / dim; -+ float u1 = 0; -+ float v1 = 0; -+ float u2 = float(width) / dim; -+ float v2 = float(height) / dim; - - const NativeWindow::RotationFlags flags = mNativeWindow.rotationFlags(); - const bool rotateL = flags == NativeWindow::RotateLeft; -@@ -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 -+ // Create a quad in homogeneous coordinates -+ float x1 = (x / float(mWidth)) * 2.0f - 1.0f; -+ float y1 = (y / float(mHeight)) * 2.0f - 1.0f; -+ float x2 = ((x + width) / float(mWidth)) * 2.0f - 1.0f; -+ float y2 = ((y + height) / float(mHeight)) * 2.0f - 1.0f; -+ - float u1 = x / float(mWidth); - float v1 = y / float(mHeight); - float u2 = (x + width) / float(mWidth); -@@ -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) -- viewport.Width = (rotateL || rotateR) ? mHeight : mWidth; -- viewport.Height = (rotateL || rotateR) ? mWidth : mHeight; -+ viewport.Width = (rotateL || rotateR) ? height : width; -+ viewport.Height = (rotateL || rotateR) ? width : height; - #else - viewport.Width = static_cast(mWidth); - viewport.Height = static_cast(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 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 -@@ -132,6 +132,7 @@ bool CoreWindowNativeWindow::registerForSizeChangeEvents() - if (SUCCEEDED(result)) - { - result = mDisplayInformation->add_OrientationChanged(orientationChangedHandler.Get(), &mOrientationChangedEventToken); -+ orientationChangedHandler->Invoke(mDisplayInformation.Get(), nullptr); - } - #endif - -@@ -175,8 +176,8 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device, - } - - DXGI_SWAP_CHAIN_DESC1 swapChainDesc = { 0 }; -- swapChainDesc.Width = width; -- swapChainDesc.Height = height; -+ swapChainDesc.Width = mRotationFlags ? height : width; -+ swapChainDesc.Height = mRotationFlags ? width : height; - swapChainDesc.Format = format; - 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 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 -@@ -108,12 +108,14 @@ EGLBoolean EGLAPIENTRY PostSubBufferNV(EGLDisplay dpy, EGLSurface surface, EGLin - return EGL_FALSE; - } - -+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) || (defined(ANGLE_ENABLE_WINDOWS_STORE) && WINAPI_FAMILY == WINAPI_FAMILY_PC_APP) // Qt WP: Allow this entry point as a workaround - if (!display->getExtensions().postSubBuffer) - { - // Spec is not clear about how this should be handled. - SetGlobalError(Error(EGL_SUCCESS)); - return EGL_TRUE; - } -+#endif - - error = eglSurface->postSubBuffer(x, y, width, height); - if (error.isError()) --- -2.7.0.windows.1 - diff --git a/src/angle/patches/0004-ANGLE-fix-usage-of-shared-handles-for-WinRT-applicat.patch b/src/angle/patches/0004-ANGLE-fix-usage-of-shared-handles-for-WinRT-applicat.patch new file mode 100644 index 0000000000..72a72f15be --- /dev/null +++ b/src/angle/patches/0004-ANGLE-fix-usage-of-shared-handles-for-WinRT-applicat.patch @@ -0,0 +1,37 @@ +From 67125df3f31dfad0feec81c49c2b317c6d418f4e Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Wed, 22 Aug 2018 13:08:19 +0200 +Subject: [PATCH 4/8] ANGLE: fix usage of shared handles for WinRT applications + +The check is not relevant in Qt's context and was skipped before but +it sneaked back in with the latest ANGLE update. + +Change-Id: Ic44de5468a3254afd76ef4804d97d245676daeb1 +--- + src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 3 +++ + 1 file changed, 3 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 f696e360ef..cb4e51e42a 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp +@@ -2270,6 +2270,8 @@ 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) +@@ -2277,6 +2279,7 @@ bool Renderer11::getShareHandleSupport() const + mSupportsShareHandles = false; + return false; + } ++#endif + + // Find out which type of D3D11 device the Renderer11 is using + d3d11::ANGLED3D11DeviceType deviceType = getDeviceType(); +-- +2.15.0.windows.1 + diff --git a/src/angle/patches/0005-ANGLE-Fix-compilation-without-d3d11.patch b/src/angle/patches/0005-ANGLE-Fix-compilation-without-d3d11.patch deleted file mode 100644 index f32702dadf..0000000000 --- a/src/angle/patches/0005-ANGLE-Fix-compilation-without-d3d11.patch +++ /dev/null @@ -1,59 +0,0 @@ -From c224d27faf33fe2830b35eba22af0a637e1309cb Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -Date: Tue, 1 Mar 2016 14:14:29 +0100 -Subject: [PATCH 5/7] ANGLE: Fix compilation without d3d11 - -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 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 -@@ -39,7 +39,7 @@ class InspectableNativeWindow; - using namespace Microsoft::WRL; - using namespace Microsoft::WRL::Wrappers; - --#else -+#elif defined(ANGLE_ENABLE_D3D11) - typedef IDXGISwapChain DXGISwapChain; - typedef IDXGIFactory DXGIFactory; - #endif -@@ -68,9 +68,11 @@ class NativeWindow - #endif - static bool isValidNativeWindow(EGLNativeWindowType window); - -+#if defined(ANGLE_ENABLE_D3D11) - HRESULT createSwapChain(ID3D11Device* device, DXGIFactory* factory, - DXGI_FORMAT format, UINT width, UINT height, - DXGISwapChain** swapChain); -+#endif - - 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 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 -@@ -56,6 +56,7 @@ bool NativeWindow::isValidNativeWindow(EGLNativeWindowType window) - return IsWindow(window) == TRUE; - } - -+#if defined(ANGLE_ENABLE_D3D11) - HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory, - DXGI_FORMAT format, unsigned int width, unsigned int height, - DXGISwapChain** swapChain) -@@ -191,6 +192,7 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory - - return factory->CreateSwapChain(device, &swapChainDesc, swapChain); - } -+#endif - - void NativeWindow::commitChange() - { --- -2.7.0.windows.1 - diff --git a/src/angle/patches/0005-ANGLE-Fix-initialization-of-zero-sized-window.patch b/src/angle/patches/0005-ANGLE-Fix-initialization-of-zero-sized-window.patch new file mode 100644 index 0000000000..eb67278628 --- /dev/null +++ b/src/angle/patches/0005-ANGLE-Fix-initialization-of-zero-sized-window.patch @@ -0,0 +1,32 @@ +From 8e649097b0e11d8b975ba321f343142dd97889cb Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Wed, 22 Aug 2018 13:12:07 +0200 +Subject: [PATCH 5/8] 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 c6d07fc888..3425fad95d 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 +@@ -324,8 +324,8 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device, + + HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const Size &windowSize, const RECT &clientRect) + { +- Size renderScale = {windowSize.Width / (float)clientRect.right, +- windowSize.Height / (float)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.15.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 deleted file mode 100644 index eb0572f201..0000000000 --- a/src/angle/patches/0006-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-requirements.patch +++ /dev/null @@ -1,57 +0,0 @@ -From b250c8e9c04cd1adccab7a6885273c9e6129131f Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -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/0006-ANGLE-Fix-flickering-on-resize-when-D3D9-is-used.patch b/src/angle/patches/0006-ANGLE-Fix-flickering-on-resize-when-D3D9-is-used.patch new file mode 100644 index 0000000000..f515b0a072 --- /dev/null +++ b/src/angle/patches/0006-ANGLE-Fix-flickering-on-resize-when-D3D9-is-used.patch @@ -0,0 +1,165 @@ +From 0fc1b9c7e87ab6cdb6bf7c81a1eee0a1d1f74e92 Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Wed, 22 Aug 2018 13:24:43 +0200 +Subject: [PATCH 6/8] ANGLE: Fix flickering on resize when D3D9 is used + +By reverting ANGLE change d3b84ab51db09de238459b0dff2e8420c09aabf3 +we get rid of the flickering that happens on resize when D3D9 is +used. The issue that was fixed there is not relevant in Qt's +context so it is safe to revert the change. + +Task-number: QTBUG-59893 +Change-Id: I9306314b892612fbd1f7a058a2e606aedc0367bb +--- + .../angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp | 89 ++++++++++++++++++++++ + .../angle/src/libANGLE/renderer/d3d/SurfaceD3D.h | 4 + + 2 files changed, 93 insertions(+) + +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp +index ceb022d14c..8d3f44f2ad 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp +@@ -38,6 +38,7 @@ SurfaceD3D::SurfaceD3D(const egl::SurfaceState &state, + mDepthStencilFormat(state.config->depthStencilFormat), + mSwapChain(nullptr), + mSwapIntervalDirty(true), ++ mWindowSubclassed(false), + mNativeWindow(renderer->createNativeWindow(window, state.config, attribs)), + mWidth(static_cast(attribs.get(EGL_WIDTH, 0))), + mHeight(static_cast(attribs.get(EGL_HEIGHT, 0))), +@@ -45,6 +46,7 @@ SurfaceD3D::SurfaceD3D(const egl::SurfaceState &state, + mShareHandle(0), + mD3DTexture(nullptr) + { ++ subclassWindow(); + if (window != nullptr && !mFixedSize) + { + mWidth = -1; +@@ -72,6 +74,7 @@ SurfaceD3D::SurfaceD3D(const egl::SurfaceState &state, + + SurfaceD3D::~SurfaceD3D() + { ++ unsubclassWindow(); + releaseSwapChain(); + SafeDelete(mNativeWindow); + SafeRelease(mD3DTexture); +@@ -256,6 +259,92 @@ egl::Error SurfaceD3D::swapRect(const gl::Context *context, + return egl::NoError(); + } + ++#if !defined(ANGLE_ENABLE_WINDOWS_STORE) ++#define kSurfaceProperty _TEXT("Egl::SurfaceOwner") ++#define kParentWndProc _TEXT("Egl::SurfaceParentWndProc") ++#define kDisplayProperty _TEXT("Egl::Display") ++ ++static LRESULT CALLBACK SurfaceWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) ++{ ++ if (message == WM_SIZE) ++ { ++ SurfaceD3D* surf = reinterpret_cast(GetProp(hwnd, kSurfaceProperty)); ++ if(surf) ++ { ++ egl::Display *display = reinterpret_cast(GetProp(hwnd, kDisplayProperty)); ++ surf->checkForOutOfDateSwapChain(display->getProxyContext()); ++ } ++ } ++ WNDPROC prevWndFunc = reinterpret_cast(GetProp(hwnd, kParentWndProc)); ++ return CallWindowProc(prevWndFunc, hwnd, message, wparam, lparam); ++} ++#endif ++ ++void SurfaceD3D::subclassWindow() ++{ ++#if !defined(ANGLE_ENABLE_WINDOWS_STORE) ++ HWND window = mNativeWindow->getNativeWindow(); ++ if (!window) ++ { ++ return; ++ } ++ ++ DWORD processId; ++ DWORD threadId = GetWindowThreadProcessId(window, &processId); ++ if (processId != GetCurrentProcessId() || threadId != GetCurrentThreadId()) ++ { ++ return; ++ } ++ ++ SetLastError(0); ++ LONG_PTR oldWndProc = SetWindowLongPtr(window, GWLP_WNDPROC, reinterpret_cast(SurfaceWindowProc)); ++ if(oldWndProc == 0 && GetLastError() != ERROR_SUCCESS) ++ { ++ mWindowSubclassed = false; ++ return; ++ } ++ ++ SetProp(window, kSurfaceProperty, reinterpret_cast(this)); ++ SetProp(window, kParentWndProc, reinterpret_cast(oldWndProc)); ++ SetProp(window, kDisplayProperty, reinterpret_cast(mDisplay)); ++ mWindowSubclassed = true; ++#endif ++} ++ ++void SurfaceD3D::unsubclassWindow() ++{ ++ if (!mWindowSubclassed) ++ { ++ return; ++ } ++ ++#if !defined(ANGLE_ENABLE_WINDOWS_STORE) ++ HWND window = mNativeWindow->getNativeWindow(); ++ if (!window) ++ { ++ return; ++ } ++ ++ // un-subclass ++ LONG_PTR parentWndFunc = reinterpret_cast(GetProp(window, kParentWndProc)); ++ ++ // Check the windowproc is still SurfaceWindowProc. ++ // If this assert fails, then it is likely the application has subclassed the ++ // hwnd as well and did not unsubclass before destroying its EGL context. The ++ // application should be modified to either subclass before initializing the ++ // EGL context, or to unsubclass before destroying the EGL context. ++ if(parentWndFunc) ++ { ++ LONG_PTR prevWndFunc = SetWindowLongPtr(window, GWLP_WNDPROC, parentWndFunc); ++ ASSERT(prevWndFunc == reinterpret_cast(SurfaceWindowProc)); ++ } ++ ++ RemoveProp(window, kSurfaceProperty); ++ RemoveProp(window, kParentWndProc); ++ RemoveProp(window, kDisplayProperty); ++#endif ++ mWindowSubclassed = false; ++} ++ ++ + egl::Error SurfaceD3D::checkForOutOfDateSwapChain(const gl::Context *context) + { + RECT client; +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.h +index 4fd45a6dfd..01d2573244 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.h ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.h +@@ -82,6 +82,9 @@ class SurfaceD3D : public SurfaceImpl + int backbufferWidth, + int backbufferHeight); + ++ void subclassWindow(); ++ void unsubclassWindow(); ++ + RendererD3D *mRenderer; + egl::Display *mDisplay; + +@@ -93,6 +96,7 @@ class SurfaceD3D : public SurfaceImpl + + SwapChainD3D *mSwapChain; + bool mSwapIntervalDirty; ++ bool mWindowSubclassed; // Indicates whether we successfully subclassed mWindow for WM_RESIZE hooking + + NativeWindowD3D *mNativeWindow; // Handler for the Window that the surface is created for. + EGLint mWidth; +-- +2.15.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 deleted file mode 100644 index badd1d7201..0000000000 --- a/src/angle/patches/0007-ANGLE-D3D11-Suppress-keyboard-handling-of-DXGI.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 955357382b1bb02043ec744ef3b5929e29c4f8cc Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -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(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/0007-ANGLE-Fix-resizing-of-windows.patch b/src/angle/patches/0007-ANGLE-Fix-resizing-of-windows.patch new file mode 100644 index 0000000000..2b4938be9b --- /dev/null +++ b/src/angle/patches/0007-ANGLE-Fix-resizing-of-windows.patch @@ -0,0 +1,48 @@ +From f1568e10c2bd46450adebbd838bd32e4833a0a5c Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Wed, 22 Aug 2018 13:32:44 +0200 +Subject: [PATCH 7/8] ANGLE: Fix resizing of windows + +Use the correct height/width values when calculating +the vector for resizing the window content and the +new size as viewport size. + +Task-number: QTBUG-62475 +Change-Id: I33a8dc1379a908e991b04bc31dfc6254a6d005c9 +--- + .../src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 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 05bb5d9863..dcfd06484d 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp +@@ -796,16 +796,15 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(const gl::Context *context, + d3d11::PositionTexCoordVertex *vertices = static_cast(mappedResource.pData); + + // Create a quad in homogeneous coordinates +- float x1 = (x / float(mWidth)) * 2.0f - 1.0f; +- float y1 = (y / float(mHeight)) * 2.0f - 1.0f; +- float x2 = ((x + width) / float(mWidth)) * 2.0f - 1.0f; +- float y2 = ((y + height) / float(mHeight)) * 2.0f - 1.0f; +- +- float u1 = x / float(mWidth); +- float v1 = y / float(mHeight); +- float u2 = (x + width) / float(mWidth); +- float v2 = (y + height) / float(mHeight); +- ++ float x1 = (x / float(width)) * 2.0f - 1.0f; ++ float y1 = (y / float(height)) * 2.0f - 1.0f; ++ float x2 = ((x + width) / float(width)) * 2.0f - 1.0f; ++ float y2 = ((y + height) / float(height)) * 2.0f - 1.0f; ++ ++ float u1 = x / float(width); ++ float v1 = y / float(height); ++ float u2 = (x + width) / float(width); ++ float v2 = (y + height) / float(height); + // Invert the quad vertices depending on the surface orientation. + if ((mOrientation & EGL_SURFACE_ORIENTATION_INVERT_X_ANGLE) != 0) + { +-- +2.15.0.windows.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 deleted file mode 100644 index 7f7517e554..0000000000 --- a/src/angle/patches/0008-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch +++ /dev/null @@ -1,401 +0,0 @@ -From 7a3851e74393eb254826face20b8e9af74bbdf0b Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -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. - -This includes a partial revert of "ANGLE: Improve Windows Phone Support" -as the modifications to SwapChain11 are incompatible with the XAML swap -chain. - -This change only affects Windows Runtime targets. - -Change-Id: I401ae81028a9dfdb9da37f51c60844467c476f76 ---- - .../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 46 ---------------------- - .../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, 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 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 -@@ -226,14 +226,8 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe - const bool useSharedResource = !mNativeWindow.getNativeWindow() && mRenderer->getShareHandleSupport(); - - D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0}; --#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -- const int textureLength = std::max(backbufferWidth, backbufferHeight); -- offscreenTextureDesc.Width = textureLength; -- offscreenTextureDesc.Height = textureLength; --#else - offscreenTextureDesc.Width = backbufferWidth; - offscreenTextureDesc.Height = backbufferHeight; --#endif - offscreenTextureDesc.Format = backbufferFormatInfo.texFormat; - offscreenTextureDesc.MipLevels = 1; - offscreenTextureDesc.ArraySize = 1; -@@ -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); -- depthStencilTextureDesc.Width = textureLength; -- depthStencilTextureDesc.Height = textureLength; --#else - depthStencilTextureDesc.Width = backbufferWidth; - depthStencilTextureDesc.Height = backbufferHeight; --#endif - depthStencilTextureDesc.Format = depthBufferFormatInfo.texFormat; - depthStencilTextureDesc.MipLevels = 1; - depthStencilTextureDesc.ArraySize = 1; -@@ -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 && mBackBufferSRView); - -@@ -496,12 +483,6 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight) - mFirstSwap = true; - - return resetOffscreenBuffers(backbufferWidth, backbufferHeight); --#else -- // Do nothing on Windows Phone apart from updating the internal buffer/width height -- mWidth = backbufferWidth; -- mHeight = backbufferHeight; -- return EGL_SUCCESS; --#endif - } - - DXGI_FORMAT SwapChain11::getSwapChainNativeFormat() const -@@ -725,27 +706,6 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width, - - d3d11::PositionTexCoordVertex *vertices = static_cast(mappedResource.pData); - --#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -- // Create a quad in homogeneous coordinates -- float x1 = -1.0f; -- float y1 = -1.0f; -- float x2 = 1.0f; -- float y2 = 1.0f; -- -- const float dim = std::max(mWidth, mHeight); -- float u1 = 0; -- float v1 = 0; -- float u2 = float(width) / dim; -- float v2 = float(height) / dim; -- -- const NativeWindow::RotationFlags flags = mNativeWindow.rotationFlags(); -- const bool rotateL = flags == NativeWindow::RotateLeft; -- const bool rotateR = flags == NativeWindow::RotateRight; -- d3d11::SetPositionTexCoordVertex(&vertices[0], x1, y1, rotateL ? u2 : u1, rotateR ? v2 : v1); -- d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, rotateR ? u2 : u1, rotateL ? v1 : v2); -- 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 - // Create a quad in homogeneous coordinates - float x1 = (x / float(mWidth)) * 2.0f - 1.0f; - float y1 = (y / float(mHeight)) * 2.0f - 1.0f; -@@ -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); --#endif - - deviceContext->Unmap(mQuadVB, 0); - -@@ -801,13 +760,8 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width, - D3D11_VIEWPORT viewport; - viewport.TopLeftX = 0; - viewport.TopLeftY = 0; --#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) -- viewport.Width = (rotateL || rotateR) ? height : width; -- viewport.Height = (rotateL || rotateR) ? width : height; --#else - viewport.Width = static_cast(mWidth); - viewport.Height = static_cast(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 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 -@@ -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 displayProperties; -- -- 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 96 dpi as a default if display properties cannot be obtained. -- return 96.0f; --} -- --long ConvertDipsToPixels(float dips) --{ -- static const float dipsPerInch = 96.0f; -- return lround((dips * GetLogicalDpi() / dipsPerInch)); --} - } -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 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,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 - { - 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))) - { -- SIZE windowSizeInPixels = { ConvertDipsToPixels(windowSize.Width), ConvertDipsToPixels(windowSize.Height) }; -- host->setNewClientSize(windowSizeInPixels); -+ host->setNewClientSize(windowSize); - } - } - -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 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 -@@ -381,4 +381,24 @@ HRESULT GetOptionalSinglePropertyValue(const ComPtr displayProperties; -+ float dpi = 96.0f; -+ -+ if (SUCCEEDED(GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(), displayProperties.GetAddressOf()))) -+ { -+ if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi))) -+ { -+ return dpi; -+ } -+ } -+ return dpi; -+} -+ -+long ConvertDipsToPixels(float dips) -+{ -+ static const float dipsPerInch = 96.0f; -+ return lround((dips * GetLogicalDpi() / dipsPerInch)); -+} - } -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 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; - - namespace rx - { -+long ConvertDipsToPixels(float dips); -+ - class InspectableNativeWindow - { - public: -@@ -65,7 +67,7 @@ class InspectableNativeWindow - } - - // 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 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(newWindowSize.cx * mSwapChainScale), static_cast(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 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 -@@ -171,12 +171,15 @@ bool SwapChainPanelNativeWindow::initialize(EGLNativeWindowType window, IPropert - { - 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(swapChainPanelSize.cx * mSwapChainScale), static_cast(swapChainPanelSize.cy * mSwapChainScale) }; -+ mClientRect = { 0, 0, static_cast(ConvertDipsToPixels(swapChainPanelSize.cx * mSwapChainScale)), -+ static_cast(ConvertDipsToPixels(swapChainPanelSize.cy * mSwapChainScale)) }; - } - } - } -@@ -269,7 +272,6 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device, - - ComPtr newSwapChain; - ComPtr swapChainPanelNative; -- SIZE currentPanelSize = {}; - - HRESULT result = factory->CreateSwapChainForComposition(device, &swapChainDesc, nullptr, newSwapChain.ReleaseAndGetAddressOf()); - -@@ -304,24 +306,24 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device, - { - if (mSwapChainSizeSpecified || mSwapChainScaleSpecified) - { -- result = GetSwapChainPanelSize(mSwapChainPanel, mSwapChainPanelDispatcher, -- ¤tPanelSize); -- -- // Scale the swapchain to fit inside the contents of the panel. -- if (SUCCEEDED(result)) -- { -- result = scaleSwapChain(currentPanelSize, mClientRect); -- } -+ ComPtr uiElement; -+ result = mSwapChainPanel.As(&uiElement); -+ ASSERT(SUCCEEDED(result)); -+ -+ Size currentSize; -+ result = uiElement->get_RenderSize(¤tSize); -+ ASSERT(SUCCEEDED(result)); -+ result = scaleSwapChain(currentSize, mClientRect); - } - } - - return result; - } - --HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const SIZE &windowSize, const RECT &clientRect) -+HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const Size &windowSize, const RECT &clientRect) - { -- 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; -@@ -340,7 +342,7 @@ HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const SIZE &windowSize, const - HRESULT GetSwapChainPanelSize( - const ComPtr &swapChainPanel, - const ComPtr &dispatcher, -- SIZE *windowSize) -+ SIZE *windowSize, float *scaleFactor) - { - ComPtr uiElement; - Size renderSize = {0, 0}; -@@ -357,9 +359,16 @@ HRESULT GetSwapChainPanelSize( - - if (SUCCEEDED(result)) - { -- *windowSize = { lround(renderSize.Width), lround(renderSize.Height) }; -+ long width = ConvertDipsToPixels(renderSize.Width); -+ long height = ConvertDipsToPixels(renderSize.Height); -+ *windowSize = { width, height }; -+ -+ if (scaleFactor) -+ { -+ *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 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 -@@ -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(); -@@ -72,8 +72,7 @@ class SwapChainPanelSizeChangedHandler : - HRESULT result = sizeChangedEventArgs->get_NewSize(&newSize); - if (SUCCEEDED(result)) - { -- SIZE windowSize = { lround(newSize.Width), lround(newSize.Height) }; -- host->setNewClientSize(windowSize); -+ host->setNewClientSize(newSize); - } - } - -@@ -87,6 +86,6 @@ class SwapChainPanelSizeChangedHandler : - HRESULT GetSwapChainPanelSize( - const ComPtr &swapChainPanel, - const ComPtr &dispatcher, -- SIZE *windowSize); -+ SIZE *windowSize, float *scaleFactor); - } - #endif // LIBANGLE_RENDERER_D3D_D3D11_WINRT_SWAPCHAINPANELNATIVEWINDOW_H_ --- -2.7.0.windows.1 - diff --git a/src/angle/patches/0008-ANGLE-winrt-Do-full-screen-update-if-the-the-window-.patch b/src/angle/patches/0008-ANGLE-winrt-Do-full-screen-update-if-the-the-window-.patch new file mode 100644 index 0000000000..d9b51fc411 --- /dev/null +++ b/src/angle/patches/0008-ANGLE-winrt-Do-full-screen-update-if-the-the-window-.patch @@ -0,0 +1,40 @@ +From 5a58c6c7d97f003aa4a34ae130697dc81cc8fdf8 Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Wed, 22 Aug 2018 15:17:52 +0200 +Subject: [PATCH 8/8] ANGLE: winrt: Do full screen update if the the window + size is reduced + +We cannot do partial updates if the window size is reduced as this will +result in a "pDstBox is not a valid box for the destination subresource." +error. + +Change-Id: I9a8d91bca961f52e1aab1bec5321922cfc842fb3 +--- + .../src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp +index 8f76d16c30..b702450ded 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp +@@ -664,9 +664,14 @@ gl::Error TextureStorage11::setData(const gl::Context *context, + // with compressed formats in the calling logic. + ASSERT(!internalFormatInfo.compressed); + +- const int width = destBox ? destBox->width : static_cast(image->getWidth()); +- const int height = destBox ? destBox->height : static_cast(image->getHeight()); +- const int depth = destBox ? destBox->depth : static_cast(image->getDepth()); ++ const int imageWidth = static_cast(image->getWidth()); ++ const int width = destBox ? destBox->width : imageWidth; ++ const int imageHeight = static_cast(image->getHeight()); ++ const int height = destBox ? destBox->height : imageHeight; ++ const int imageDepth = static_cast(image->getDepth()); ++ const int depth = destBox ? destBox->depth : imageDepth; ++ if (imageWidth < width || imageHeight < height || imageDepth < depth) ++ fullUpdate = true; + GLuint srcRowPitch = 0; + ANGLE_TRY_RESULT( + internalFormatInfo.computeRowPitch(type, width, unpack.alignment, unpack.rowLength), +-- +2.15.0.windows.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 deleted file mode 100644 index b53e11038b..0000000000 --- a/src/angle/patches/0009-ANGLE-glGetUniform-v-functions-to-work-properly.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 2d4a7aec7957e507cbf0b4b8dcf68abb26667e33 Mon Sep 17 00:00:00 2001 -From: Miikka Heikkinen -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/0009-Revert-Fix-scanForWantedComponents-not-ignoring-attr.patch b/src/angle/patches/0009-Revert-Fix-scanForWantedComponents-not-ignoring-attr.patch new file mode 100644 index 0000000000..f57f528ad8 --- /dev/null +++ b/src/angle/patches/0009-Revert-Fix-scanForWantedComponents-not-ignoring-attr.patch @@ -0,0 +1,67 @@ +From 2fb4d8087c4f324b7a3f2e21554374de7060e996 Mon Sep 17 00:00:00 2001 +From: Andre de la Rocha +Date: Tue, 11 Sep 2018 12:52:28 +0200 +Subject: [PATCH] Revert "Fix scanForWantedComponents not ignoring + attribute values of 0." + +This patch reverts commit 2648d9297f25a0d1fa2837f020975a45d4e8a8b9 as a +workaround for the "banding" artifacts we were seeing in Qt. Angle +returns a list of supported graphic formats or configurations, sorting +it in a way that the first one should be the one that fits better the +requested format. In Qt we use the first thing we receive in the list. +In the current Angle version, however, a fix has changed the way in +which the list is sorted. In the old version the first element would be +a 32-bit graphic format, while now it's a 16-bit one, resulting in the +"banding" artifacts. The workaround reverts back to the previous sorting +behavior. +--- + .../libANGLE/Config.cpp | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) + +diff --git a/src/3rdparty/angle/src/libANGLE/Config.cpp b/src/3rdparty/angle/src/libANGLE/Config.cpp +index ccf64c8f8..4f14e73ef 100644 +--- a/src/3rdparty/angle/src/libANGLE/Config.cpp ++++ b/src/3rdparty/angle/src/libANGLE/Config.cpp +@@ -181,22 +181,27 @@ class ConfigSorter + } + + private: +- static bool wantsComponent(const AttributeMap &attributeMap, EGLAttrib component) ++ void scanForWantedComponents(const AttributeMap &attributeMap) + { + // [EGL 1.5] section 3.4.1.2 page 30 + // Sorting rule #3: by larger total number of color bits, not considering + // components that are 0 or don't-care. +- EGLAttrib value = attributeMap.get(component, 0); +- return value != 0 && value != EGL_DONT_CARE; +- } +- +- void scanForWantedComponents(const AttributeMap &attributeMap) +- { +- mWantRed = wantsComponent(attributeMap, EGL_RED_SIZE); +- mWantGreen = wantsComponent(attributeMap, EGL_GREEN_SIZE); +- mWantBlue = wantsComponent(attributeMap, EGL_BLUE_SIZE); +- mWantAlpha = wantsComponent(attributeMap, EGL_ALPHA_SIZE); +- mWantLuminance = wantsComponent(attributeMap, EGL_LUMINANCE_SIZE); ++ for (auto attribIter = attributeMap.begin(); attribIter != attributeMap.end(); attribIter++) ++ { ++ EGLAttrib attributeKey = attribIter->first; ++ EGLAttrib attributeValue = attribIter->second; ++ if (attributeKey != 0 && attributeValue != EGL_DONT_CARE) ++ { ++ switch (attributeKey) ++ { ++ case EGL_RED_SIZE: mWantRed = true; break; ++ case EGL_GREEN_SIZE: mWantGreen = true; break; ++ case EGL_BLUE_SIZE: mWantBlue = true; break; ++ case EGL_ALPHA_SIZE: mWantAlpha = true; break; ++ case EGL_LUMINANCE_SIZE: mWantLuminance = true; break; ++ } ++ } ++ } + } + + EGLint wantedComponentsSize(const Config &config) const +-- +2.14.1.windows.1 + diff --git a/src/angle/patches/0010-ANGLE-Disable-multisampling-to-avoid-crash-in-Qt-app.patch b/src/angle/patches/0010-ANGLE-Disable-multisampling-to-avoid-crash-in-Qt-app.patch new file mode 100644 index 0000000000..2fb65ce220 --- /dev/null +++ b/src/angle/patches/0010-ANGLE-Disable-multisampling-to-avoid-crash-in-Qt-app.patch @@ -0,0 +1,41 @@ +From d239cceef88fbbe4cf7479025f12934d9c3c83a5 Mon Sep 17 00:00:00 2001 +From: Andre de la Rocha +Date: Tue, 11 Sep 2018 12:57:23 +0200 +Subject: [PATCH] ANGLE: Disable multisampling to avoid crash in Qt + applications + +This patch adds a workaround for the crash that occurs with multisampling +enabled in some Qt applications (e.g., the 2dpainting example). The old +Angle release we were using lacked support for multisampling, so it was +ignored when requested. This current version seems to support it, but is +causing a crash in the D3D11 shaders, so this workaround disables that +support. +--- + .../libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 4 ++++ + 1 file changed, 4 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 bd14f4de2..f487538a5 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp +@@ -997,6 +997,8 @@ gl::SupportedSampleSet Renderer11::generateSampleSetForEGLConfig( + { + gl::SupportedSampleSet sampleCounts; + ++#if 0 // Qt: Disabling support for multisampling as it is causing a crash in the D3D11 shaders. ++ + // Generate a new set from the set intersection of sample counts between the color and depth + // format caps. + std::set_intersection(colorBufferFormatCaps.sampleCounts.begin(), +@@ -1017,6 +1019,8 @@ gl::SupportedSampleSet Renderer11::generateSampleSetForEGLConfig( + sampleCounts = depthStencilBufferFormatCaps.sampleCounts; + } + ++#endif ++ + // Always support 0 samples + sampleCounts.insert(0); + +-- +2.14.1.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 deleted file mode 100644 index 8f17018e6e..0000000000 --- a/src/angle/patches/0010-ANGLE-fixed-usage-of-shared-handles-for-WinRT-WinPho.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 5cacddc702624d64a4917a7a704dbbb92aeba53c Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -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/0011-ANGLE-Disable-support-for-shared-handles-in-warp-mod.patch b/src/angle/patches/0011-ANGLE-Disable-support-for-shared-handles-in-warp-mod.patch deleted file mode 100644 index 1c4ee1d513..0000000000 --- a/src/angle/patches/0011-ANGLE-Disable-support-for-shared-handles-in-warp-mod.patch +++ /dev/null @@ -1,44 +0,0 @@ -From db13a9cf7e41207660f080827983655864df802d Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -Date: Wed, 11 May 2016 13:51:54 +0200 -Subject: [PATCH] ANGLE: Disable support for shared handles in warp mode on - Windows < 8 - -Shared handles are not supported on Windows 7 and below. If the -according flag is set CreateTexture2D will fail with E_OUTOFMEMORY. The -check already happens with newer ANGLE versions, which we use in 5.7 -but has to happen here as well. Otherwise Qt applications running on -Windows 7 and below will crash at startup. - -Change-Id: I8f539f16dce298611fb1ec7b2f6804d4a04d04e0 ---- - .../angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 13 +++++++++++++ - 1 file changed, 13 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 223e2b0..dd554f4 100644 ---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp -+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp -@@ -2370,6 +2370,19 @@ unsigned int Renderer11::getReservedFragmentUniformBuffers() const - - bool Renderer11::getShareHandleSupport() const - { -+ if (mDriverType == D3D_DRIVER_TYPE_WARP) -+ { -+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) -+ // Warp mode does not support shared handles in Windows versions below Windows 8 -+ OSVERSIONINFO result = { sizeof(OSVERSIONINFO), 0, 0, 0, 0, {'\0'}}; -+ if (GetVersionEx(&result) && -+ ((result.dwMajorVersion == 6 && result.dwMinorVersion < 2) || result.dwMajorVersion < 6)) -+ { -+ // WARP on Windows 7 doesn't support shared handles -+ return false; -+ } -+#endif // ANGLE_ENABLE_WINDOWS_STORE -+ } - // We only currently support share handles with BGRA surfaces, because - // chrome needs BGRA. Once chrome fixes this, we should always support them. - // PIX doesn't seem to support using share handles, so disable them. --- -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 deleted file mode 100644 index fe65af7948..0000000000 --- a/src/angle/patches/0012-ANGLE-Fix-initialization-of-zero-sized-window.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 79d2bac44cb2a0793c00886f0499422ab6ffa09c Mon Sep 17 00:00:00 2001 -From: Maurice Kalinowski -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 - diff --git a/src/angle/patches/0013-ANGLE-Fix-crash-with-ltcg-on-Visual-Studio-2015-Upda.patch b/src/angle/patches/0013-ANGLE-Fix-crash-with-ltcg-on-Visual-Studio-2015-Upda.patch deleted file mode 100644 index ee847d3d9a..0000000000 --- a/src/angle/patches/0013-ANGLE-Fix-crash-with-ltcg-on-Visual-Studio-2015-Upda.patch +++ /dev/null @@ -1,110 +0,0 @@ -From c30bdc7d961ff09d74117e038c1bb9f06ad49738 Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -Date: Wed, 7 Jun 2017 10:07:43 +0200 -Subject: [PATCH] ANGLE: Fix crash with ltcg on Visual Studio 2015 Update 3 - -Release builds of applications that used Qt configured with "link time -code generation" crashed (memory access violation), when calling -GetInternalFormatInfo in Context::initCaps. - -It looks like this is a compiler problem that can be avoided by not -using a reference for the return value. - -Task-number: QTBUG-55718 -Change-Id: Ic1fb95d7b518a49859f41c819e860864387a8d3c ---- - src/3rdparty/angle/src/libANGLE/formatutils.cpp | 2 +- - src/3rdparty/angle/src/libANGLE/formatutils.h | 2 +- - src/3rdparty/angle/src/libANGLE/validationES3.cpp | 18 +++++++++--------- - 3 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/src/3rdparty/angle/src/libANGLE/formatutils.cpp b/src/3rdparty/angle/src/libANGLE/formatutils.cpp -index 3a4df12..f8b9a8b 100644 ---- a/src/3rdparty/angle/src/libANGLE/formatutils.cpp -+++ b/src/3rdparty/angle/src/libANGLE/formatutils.cpp -@@ -652,7 +652,7 @@ const Type &GetTypeInfo(GLenum type) - } - } - --const InternalFormat &GetInternalFormatInfo(GLenum internalFormat) -+const InternalFormat GetInternalFormatInfo(GLenum internalFormat) - { - const InternalFormatInfoMap &formatMap = GetInternalFormatMap(); - InternalFormatInfoMap::const_iterator iter = formatMap.find(internalFormat); -diff --git a/src/3rdparty/angle/src/libANGLE/formatutils.h b/src/3rdparty/angle/src/libANGLE/formatutils.h -index 6863e4d..2165e6b 100644 ---- a/src/3rdparty/angle/src/libANGLE/formatutils.h -+++ b/src/3rdparty/angle/src/libANGLE/formatutils.h -@@ -79,7 +79,7 @@ struct InternalFormat - GLint skipRows, - GLint skipPixels) const; - }; --const InternalFormat &GetInternalFormatInfo(GLenum internalFormat); -+const InternalFormat GetInternalFormatInfo(GLenum internalFormat); - - GLenum GetSizedInternalFormat(GLenum internalFormat, GLenum type); - -diff --git a/src/3rdparty/angle/src/libANGLE/validationES3.cpp b/src/3rdparty/angle/src/libANGLE/validationES3.cpp -index e08e5d2..2db64ec 100644 ---- a/src/3rdparty/angle/src/libANGLE/validationES3.cpp -+++ b/src/3rdparty/angle/src/libANGLE/validationES3.cpp -@@ -775,20 +775,20 @@ static bool IsValidES3CopyTexImageCombination(GLenum textureInternalFormat, GLen - // with the values of the source buffer's [channel sizes]. Table 3.17 is used if the - // FRAMEBUFFER_ATTACHMENT_ENCODING is LINEAR and table 3.18 is used if the FRAMEBUFFER_ATTACHMENT_ENCODING - // is SRGB. -- const InternalFormat *sourceEffectiveFormat = NULL; -+ InternalFormat sourceEffectiveFormat; - if (readBufferHandle != 0) - { - // Not the default framebuffer, therefore the read buffer must be a user-created texture or renderbuffer - if (framebufferInternalFormatInfo.pixelBytes > 0) - { -- sourceEffectiveFormat = &framebufferInternalFormatInfo; -+ sourceEffectiveFormat = framebufferInternalFormatInfo; - } - else - { - // Renderbuffers cannot be created with an unsized internal format, so this must be an unsized-format - // texture. We can use the same table we use when creating textures to get its effective sized format. - GLenum sizedInternalFormat = GetSizedInternalFormat(framebufferInternalFormatInfo.format, framebufferInternalFormatInfo.type); -- sourceEffectiveFormat = &GetInternalFormatInfo(sizedInternalFormat); -+ sourceEffectiveFormat = GetInternalFormatInfo(sizedInternalFormat); - } - } - else -@@ -800,7 +800,7 @@ static bool IsValidES3CopyTexImageCombination(GLenum textureInternalFormat, GLen - GLenum effectiveFormat; - if (GetEffectiveInternalFormat(framebufferInternalFormatInfo, textureInternalFormatInfo, &effectiveFormat)) - { -- sourceEffectiveFormat = &GetInternalFormatInfo(effectiveFormat); -+ sourceEffectiveFormat = GetInternalFormatInfo(effectiveFormat); - } - else - { -@@ -816,7 +816,7 @@ static bool IsValidES3CopyTexImageCombination(GLenum textureInternalFormat, GLen - (framebufferInternalFormatInfo.blueBits >= 1 && framebufferInternalFormatInfo.blueBits <= 8) && - (framebufferInternalFormatInfo.alphaBits >= 1 && framebufferInternalFormatInfo.alphaBits <= 8)) - { -- sourceEffectiveFormat = &GetInternalFormatInfo(GL_SRGB8_ALPHA8); -+ sourceEffectiveFormat = GetInternalFormatInfo(GL_SRGB8_ALPHA8); - } - else - { -@@ -834,10 +834,10 @@ static bool IsValidES3CopyTexImageCombination(GLenum textureInternalFormat, GLen - { - // Section 3.8.5 of the GLES 3.0.3 spec, pg 139, requires that, if the destination format is sized, - // component sizes of the source and destination formats must exactly match -- if (textureInternalFormatInfo.redBits != sourceEffectiveFormat->redBits || -- textureInternalFormatInfo.greenBits != sourceEffectiveFormat->greenBits || -- textureInternalFormatInfo.blueBits != sourceEffectiveFormat->blueBits || -- textureInternalFormatInfo.alphaBits != sourceEffectiveFormat->alphaBits) -+ if (textureInternalFormatInfo.redBits != sourceEffectiveFormat.redBits || -+ textureInternalFormatInfo.greenBits != sourceEffectiveFormat.greenBits || -+ textureInternalFormatInfo.blueBits != sourceEffectiveFormat.blueBits || -+ textureInternalFormatInfo.alphaBits != sourceEffectiveFormat.alphaBits) - { - return false; - } --- -2.5.3.windows.1 - diff --git a/src/angle/patches/0014-ANGLE-Fix-flickering-on-resize-when-D3D9-is-used.patch b/src/angle/patches/0014-ANGLE-Fix-flickering-on-resize-when-D3D9-is-used.patch deleted file mode 100644 index e389219976..0000000000 --- a/src/angle/patches/0014-ANGLE-Fix-flickering-on-resize-when-D3D9-is-used.patch +++ /dev/null @@ -1,157 +0,0 @@ -From 0a6fe2a93f451997d01e5e326846e0911d22622b Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -Date: Wed, 31 May 2017 15:50:28 +0200 -Subject: [PATCH] ANGLE: Fix flickering on resize when D3D9 is used - -By reverting ANGLE change d3b84ab51db09de238459b0dff2e8420c09aabf3 -we get rid of the flickering that happens on resize when D3D9 is -used. The issue that was fixed there is not relevant in Qt's -context so it is safe to revert the change. - -Task-number: QTBUG-59893 -Change-Id: I9306314b892612fbd1f7a058a2e606aedc0367bb ---- - .../angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp | 87 ++++++++++++++++++++++ - .../angle/src/libANGLE/renderer/d3d/SurfaceD3D.h | 4 + - 2 files changed, 91 insertions(+) - -diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp -index 3d27548..f567f47 100644 ---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp -+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp -@@ -61,16 +61,19 @@ SurfaceD3D::SurfaceD3D(RendererD3D *renderer, - mDepthStencilFormat(config->depthStencilFormat), - mSwapChain(nullptr), - mSwapIntervalDirty(true), -+ mWindowSubclassed(false), - mNativeWindow(window, config, directComposition == EGL_TRUE), - mWidth(width), - mHeight(height), - mSwapInterval(1), - mShareHandle(reinterpret_cast(shareHandle)) - { -+ subclassWindow(); - } - - SurfaceD3D::~SurfaceD3D() - { -+ unsubclassWindow(); - releaseSwapChain(); - } - -@@ -243,6 +246,90 @@ egl::Error SurfaceD3D::swapRect(EGLint x, EGLint y, EGLint width, EGLint height) - return egl::Error(EGL_SUCCESS); - } - -+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) -+#define kSurfaceProperty _TEXT("Egl::SurfaceOwner") -+#define kParentWndProc _TEXT("Egl::SurfaceParentWndProc") -+ -+static LRESULT CALLBACK SurfaceWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) -+{ -+ if (message == WM_SIZE) -+ { -+ SurfaceD3D* surf = reinterpret_cast(GetProp(hwnd, kSurfaceProperty)); -+ if(surf) -+ { -+ surf->checkForOutOfDateSwapChain(); -+ } -+ } -+ WNDPROC prevWndFunc = reinterpret_cast(GetProp(hwnd, kParentWndProc)); -+ return CallWindowProc(prevWndFunc, hwnd, message, wparam, lparam); -+} -+#endif -+ -+void SurfaceD3D::subclassWindow() -+{ -+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) -+ HWND window = mNativeWindow.getNativeWindow(); -+ if (!window) -+ { -+ return; -+ } -+ -+ DWORD processId; -+ DWORD threadId = GetWindowThreadProcessId(window, &processId); -+ if (processId != GetCurrentProcessId() || threadId != GetCurrentThreadId()) -+ { -+ return; -+ } -+ -+ SetLastError(0); -+ LONG_PTR oldWndProc = SetWindowLongPtr(window, GWLP_WNDPROC, reinterpret_cast(SurfaceWindowProc)); -+ if(oldWndProc == 0 && GetLastError() != ERROR_SUCCESS) -+ { -+ mWindowSubclassed = false; -+ return; -+ } -+ -+ SetProp(window, kSurfaceProperty, reinterpret_cast(this)); -+ SetProp(window, kParentWndProc, reinterpret_cast(oldWndProc)); -+ mWindowSubclassed = true; -+#endif -+} -+ -+void SurfaceD3D::unsubclassWindow() -+{ -+ if (!mWindowSubclassed) -+ { -+ return; -+ } -+ -+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) -+ HWND window = mNativeWindow.getNativeWindow(); -+ if (!window) -+ { -+ return; -+ } -+ -+ // un-subclass -+ LONG_PTR parentWndFunc = reinterpret_cast(GetProp(window, kParentWndProc)); -+ -+ // Check the windowproc is still SurfaceWindowProc. -+ // If this assert fails, then it is likely the application has subclassed the -+ // hwnd as well and did not unsubclass before destroying its EGL context. The -+ // application should be modified to either subclass before initializing the -+ // EGL context, or to unsubclass before destroying the EGL context. -+ if(parentWndFunc) -+ { -+ LONG_PTR prevWndFunc = SetWindowLongPtr(window, GWLP_WNDPROC, parentWndFunc); -+ UNUSED_ASSERTION_VARIABLE(prevWndFunc); -+ ASSERT(prevWndFunc == reinterpret_cast(SurfaceWindowProc)); -+ } -+ -+ RemoveProp(window, kSurfaceProperty); -+ RemoveProp(window, kParentWndProc); -+#endif -+ mWindowSubclassed = false; -+} -+ - bool SurfaceD3D::checkForOutOfDateSwapChain() - { - RECT client; -diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.h -index b925bfc..67d408d 100644 ---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.h -+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.h -@@ -82,6 +82,9 @@ class SurfaceD3D : public SurfaceImpl - egl::Error resetSwapChain(int backbufferWidth, int backbufferHeight); - egl::Error resizeSwapChain(int backbufferWidth, int backbufferHeight); - -+ void subclassWindow(); -+ void unsubclassWindow(); -+ - RendererD3D *mRenderer; - egl::Display *mDisplay; - -@@ -93,6 +96,7 @@ class SurfaceD3D : public SurfaceImpl - - SwapChainD3D *mSwapChain; - bool mSwapIntervalDirty; -+ bool mWindowSubclassed; // Indicates whether we successfully subclassed mWindow for WM_RESIZE hooking - - NativeWindow mNativeWindow; // Handler for the Window that the surface is created for. - EGLint mWidth; --- -2.10.2.windows.1 - diff --git a/src/angle/patches/0015-ANGLE-Use-ANGLE_D3D11_QDTD_AVAILABLE-to-check-struct-.patch b/src/angle/patches/0015-ANGLE-Use-ANGLE_D3D11_QDTD_AVAILABLE-to-check-struct-.patch deleted file mode 100644 index 9809fefd9d..0000000000 --- a/src/angle/patches/0015-ANGLE-Use-ANGLE_D3D11_QDTD_AVAILABLE-to-check-struct-.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 640361e72369d612270c6e59126019c917e33c9a Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -Date: Fri, 28 Jul 2017 09:02:50 +0200 -Subject: [PATCH] ANGLE: Use ANGLE_D3D11_QDTD_AVAILABLE to check struct's - availability - -Checking mingw when defining the structure is not enough, as it is -available in recent versions of MinGW. The define that is used is set -depending on a configure test which works independently of the used -toolchain. - -Change-Id: Ia9cb48f3e673841101a93cbc8ea23aff9547f639 ---- - src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -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 972c289..97c65e1 100644 ---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp -+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp -@@ -20,7 +20,7 @@ typedef struct D3D11_QUERY_DATA_SO_STATISTICS { - } D3D11_QUERY_DATA_SO_STATISTICS; - #endif // ANGLE_MINGW32_COMPAT - --#ifdef __MINGW32__ -+#ifndef ANGLE_D3D11_QDTD_AVAILABLE - typedef struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT { - UINT64 Frequency; - BOOL Disjoint; --- -2.10.2.windows.1 - diff --git a/src/angle/patches/0016-ANGLE-Fix-resizing-of-windows.patch b/src/angle/patches/0016-ANGLE-Fix-resizing-of-windows.patch deleted file mode 100644 index 7ba92052f2..0000000000 --- a/src/angle/patches/0016-ANGLE-Fix-resizing-of-windows.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 55821d34b2208e7858dbba5648760b83c66b58a5 Mon Sep 17 00:00:00 2001 -From: Oliver Wolff -Date: Mon, 29 Aug 2016 09:48:28 +0200 -Subject: [PATCH] ANGLE: Fix resizing of windows - -Use the correct height/width values when calculating -the vector for resizing the window content and the -new size as viewport size. - -Task-number: QTBUG-62475 -Change-Id: I33a8dc1379a908e991b04bc31dfc6254a6d005c9 ---- - .../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 35 +++++++++++----------- - 1 file changed, 17 insertions(+), 18 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 785a83cd77..fe72bc935d 100644 ---- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp -+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp -@@ -707,15 +706,15 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width, - d3d11::PositionTexCoordVertex *vertices = static_cast(mappedResource.pData); - - // Create a quad in homogeneous coordinates -- float x1 = (x / float(mWidth)) * 2.0f - 1.0f; -- float y1 = (y / float(mHeight)) * 2.0f - 1.0f; -- float x2 = ((x + width) / float(mWidth)) * 2.0f - 1.0f; -- float y2 = ((y + height) / float(mHeight)) * 2.0f - 1.0f; -+ float x1 = (x / float(width)) * 2.0f - 1.0f; -+ float y1 = (y / float(height)) * 2.0f - 1.0f; -+ float x2 = ((x + width) / float(width)) * 2.0f - 1.0f; -+ float y2 = ((y + height) / float(height)) * 2.0f - 1.0f; - -- float u1 = x / float(mWidth); -- float v1 = y / float(mHeight); -- float u2 = (x + width) / float(mWidth); -- float v2 = (y + height) / float(mHeight); -+ float u1 = x / float(width); -+ float v1 = y / float(height); -+ float u2 = (x + width) / float(width); -+ float v2 = (y + height) / float(height); - - // Invert the quad vertices depending on the surface orientation. - if ((mOrientation & EGL_SURFACE_ORIENTATION_INVERT_X_ANGLE) != 0) -@@ -760,8 +759,8 @@ EGLint SwapChain11::copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width, - D3D11_VIEWPORT viewport; - viewport.TopLeftX = 0; - viewport.TopLeftY = 0; -- viewport.Width = static_cast(mWidth); -- viewport.Height = static_cast(mHeight); -+ viewport.Width = static_cast(width); -+ viewport.Height = static_cast(height); - viewport.MinDepth = 0.0f; - viewport.MaxDepth = 1.0f; - deviceContext->RSSetViewports(1, &viewport); --- -2.15.0.windows.1 - diff --git a/src/angle/patches/0017-Remove-usage-of-auto_ptr-in-MacroExpander.patch b/src/angle/patches/0017-Remove-usage-of-auto_ptr-in-MacroExpander.patch deleted file mode 100644 index 314a985bab..0000000000 --- a/src/angle/patches/0017-Remove-usage-of-auto_ptr-in-MacroExpander.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 946903d23ae361ddb05d2c0f64b339eb1694311b Mon Sep 17 00:00:00 2001 -From: Corentin Wallez -Date: Mon, 18 Apr 2016 17:30:07 -0400 -Subject: [PATCH] Remove usage of auto_ptr in MacroExpander - -BUG=angleproject:1269 - -Change-Id: I1fafa102b065f6da1797e8790ec3ed498d9d8b45 -Reviewed-on: https://chromium-review.googlesource.com/339379 -Reviewed-by: Jamie Madill -Commit-Queue: Corentin Wallez ---- - src/compiler/preprocessor/MacroExpander.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/compiler/preprocessor/MacroExpander.h b/src/compiler/preprocessor/MacroExpander.h -index 3cc860d75..dc870f626 100644 ---- a/src/3rdparty/angle/src/compiler/preprocessor/MacroExpander.h -+++ b/src/3rdparty/angle/src/compiler/preprocessor/MacroExpander.h -@@ -83,7 +83,7 @@ class MacroExpander : public Lexer - Diagnostics *mDiagnostics; - bool mParseDefined; - -- std::auto_ptr mReserveToken; -+ std::unique_ptr mReserveToken; - std::vector mContextStack; - }; - --- -2.15.0.windows.1 - diff --git a/src/angle/src/common/common.pri b/src/angle/src/common/common.pri index 8abdc24186..b64dbd3e36 100644 --- a/src/angle/src/common/common.pri +++ b/src/angle/src/common/common.pri @@ -10,7 +10,8 @@ include (../config.pri) INCLUDEPATH += \ $$ANGLE_DIR/src \ - $$ANGLE_DIR/include + $$ANGLE_DIR/include \ + $$ANGLE_DIR/src/common/third_party/base LIBS_PRIVATE = $$QMAKE_LIBS_GUI diff --git a/src/angle/src/common/gles_common.pri b/src/angle/src/common/gles_common.pri index 82d38a62e6..e32fd0ea01 100644 --- a/src/angle/src/common/gles_common.pri +++ b/src/angle/src/common/gles_common.pri @@ -1,7 +1,10 @@ CONFIG += simd no_batch object_parallel_to_source include(common.pri) -INCLUDEPATH += $$OUT_PWD/.. $$ANGLE_DIR/src/libANGLE +INCLUDEPATH += \ + $$OUT_PWD/.. \ + $$ANGLE_DIR \ + $$ANGLE_DIR/src/libANGLE # Remember to adapt src/gui/configure.* if the Direct X version changes. !winrt: \ @@ -30,10 +33,8 @@ qtConfig(angle_d3d11_qdtd): DEFINES += ANGLE_D3D11_QDTD_AVAILABLE HEADERS += \ $$ANGLE_DIR/src/common/mathutil.h \ - $$ANGLE_DIR/src/common/blocklayout.h \ - $$ANGLE_DIR/src/common/NativeWindow.h \ - $$ANGLE_DIR/src/common/shadervars.h \ $$ANGLE_DIR/src/common/utilities.h \ + $$ANGLE_DIR/src/common/version.h \ $$ANGLE_DIR/src/common/MemoryBuffer.h \ $$ANGLE_DIR/src/common/angleutils.h \ $$ANGLE_DIR/src/common/debug.h \ @@ -47,7 +48,6 @@ HEADERS += \ $$ANGLE_DIR/src/libANGLE/Config.h \ $$ANGLE_DIR/src/libANGLE/Constants.h \ $$ANGLE_DIR/src/libANGLE/Context.h \ - $$ANGLE_DIR/src/libANGLE/Data.h \ $$ANGLE_DIR/src/libANGLE/Debug.h \ $$ANGLE_DIR/src/libANGLE/Device.h \ $$ANGLE_DIR/src/libANGLE/Display.h \ @@ -81,21 +81,16 @@ HEADERS += \ $$ANGLE_DIR/src/libANGLE/VertexAttribute.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/BufferD3D.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/CompilerD3D.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/copyimage.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DeviceD3D.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DisplayD3D.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DynamicHLSL.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/EGLImageD3D.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/formatutilsD3D.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/FramebufferD3D.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/generatemip.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/HLSLCompiler.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ImageD3D.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/imageformats.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/IndexBuffer.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/IndexDataManager.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/loadimage.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/loadimage_etc.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ProgramD3D.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RenderbufferD3D.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RendererD3D.h \ @@ -106,8 +101,6 @@ HEADERS += \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/SwapChainD3D.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/TextureD3D.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/TextureStorage.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/TransformFeedbackD3D.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/VaryingPacking.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/VertexBuffer.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/VertexDataManager.h \ $$ANGLE_DIR/src/libANGLE/renderer/BufferImpl.h \ @@ -115,21 +108,15 @@ HEADERS += \ $$ANGLE_DIR/src/libANGLE/renderer/DeviceImpl.h \ $$ANGLE_DIR/src/libANGLE/renderer/DisplayImpl.h \ $$ANGLE_DIR/src/libANGLE/renderer/FenceNVImpl.h \ - $$ANGLE_DIR/src/libANGLE/renderer/FenceSyncImpl.h \ $$ANGLE_DIR/src/libANGLE/renderer/FramebufferImpl.h \ - $$ANGLE_DIR/src/libANGLE/renderer/Image.h \ - $$ANGLE_DIR/src/libANGLE/renderer/ImplFactory.h \ $$ANGLE_DIR/src/libANGLE/renderer/ProgramImpl.h \ $$ANGLE_DIR/src/libANGLE/renderer/QueryImpl.h \ $$ANGLE_DIR/src/libANGLE/renderer/RenderbufferImpl.h \ - $$ANGLE_DIR/src/libANGLE/renderer/Renderer.h \ $$ANGLE_DIR/src/libANGLE/renderer/ShaderImpl.h \ $$ANGLE_DIR/src/libANGLE/renderer/SurfaceImpl.h \ $$ANGLE_DIR/src/libANGLE/renderer/TextureImpl.h \ $$ANGLE_DIR/src/libANGLE/renderer/TransformFeedbackImpl.h \ $$ANGLE_DIR/src/libANGLE/renderer/VertexArrayImpl.h \ - $$ANGLE_DIR/src/libANGLE/renderer/Workarounds.h \ - $$ANGLE_DIR/src/libANGLE/resource.h \ $$ANGLE_DIR/src/libANGLE/ResourceManager.h \ $$ANGLE_DIR/src/libANGLE/Sampler.h \ $$ANGLE_DIR/src/libANGLE/Shader.h \ @@ -142,16 +129,11 @@ HEADERS += \ $$ANGLE_DIR/src/libANGLE/validationES.h \ $$ANGLE_DIR/src/libANGLE/VertexArray.h \ $$ANGLE_DIR/src/libANGLE/VertexAttribute.h \ - $$ANGLE_DIR/src/libANGLE/vertexconversion.h \ $$ANGLE_DIR/src/libGLESv2/entry_points_egl.h \ $$ANGLE_DIR/src/libGLESv2/entry_points_egl_ext.h \ - $$ANGLE_DIR/src/libGLESv2/entry_points_gles_2_0.h \ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_2_0_ext.h \ - $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_0.h \ - $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_0_ext.h \ $$ANGLE_DIR/src/libGLESv2/global_state.h \ - $$ANGLE_DIR/src/libGLESv2/resource.h \ - $$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.h + $$ANGLE_DIR/src/libGLESv2/resource.h SOURCES += \ $$ANGLE_DIR/src/common/mathutil.cpp \ @@ -161,7 +143,14 @@ SOURCES += \ $$ANGLE_DIR/src/common/debug.cpp \ $$ANGLE_DIR/src/common/event_tracer.cpp \ $$ANGLE_DIR/src/common/Float16ToFloat32.cpp \ - $$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.cpp \ + $$ANGLE_DIR/src/common/string_utils.cpp \ + $$ANGLE_DIR/src/common/uniform_type_info_autogen.cpp \ + $$ANGLE_DIR/src/common/third_party/smhasher/src/PMurHash.cpp \ + $$ANGLE_DIR/src/common/third_party/base/anglebase/sha1.cc \ + $$ANGLE_DIR/src/image_util/copyimage.cpp \ + $$ANGLE_DIR/src/image_util/imageformats.cpp \ + $$ANGLE_DIR/src/image_util/loadimage.cpp \ + $$ANGLE_DIR/src/image_util/loadimage_etc.cpp \ $$ANGLE_DIR/src/libANGLE/angletypes.cpp \ $$ANGLE_DIR/src/libANGLE/AttributeMap.cpp \ $$ANGLE_DIR/src/libANGLE/Buffer.cpp \ @@ -169,57 +158,75 @@ SOURCES += \ $$ANGLE_DIR/src/libANGLE/Compiler.cpp \ $$ANGLE_DIR/src/libANGLE/Config.cpp \ $$ANGLE_DIR/src/libANGLE/Context.cpp \ - $$ANGLE_DIR/src/libANGLE/Data.cpp \ + $$ANGLE_DIR/src/libANGLE/ContextState.cpp \ $$ANGLE_DIR/src/libANGLE/Debug.cpp \ $$ANGLE_DIR/src/libANGLE/Device.cpp \ $$ANGLE_DIR/src/libANGLE/Display.cpp \ $$ANGLE_DIR/src/libANGLE/Error.cpp \ + $$ANGLE_DIR/src/libANGLE/es3_copy_conversion_table_autogen.cpp \ $$ANGLE_DIR/src/libANGLE/Fence.cpp \ $$ANGLE_DIR/src/libANGLE/formatutils.cpp \ + $$ANGLE_DIR/src/libANGLE/format_map_autogen.cpp \ $$ANGLE_DIR/src/libANGLE/Framebuffer.cpp \ $$ANGLE_DIR/src/libANGLE/FramebufferAttachment.cpp \ $$ANGLE_DIR/src/libANGLE/HandleAllocator.cpp \ + $$ANGLE_DIR/src/libANGLE/HandleRangeAllocator.cpp \ $$ANGLE_DIR/src/libANGLE/Image.cpp \ $$ANGLE_DIR/src/libANGLE/ImageIndex.cpp \ $$ANGLE_DIR/src/libANGLE/IndexRangeCache.cpp \ + $$ANGLE_DIR/src/libANGLE/LoggingAnnotator.cpp \ + $$ANGLE_DIR/src/libANGLE/MemoryProgramCache.cpp \ + $$ANGLE_DIR/src/libANGLE/PackedGLEnums_autogen.cpp \ + $$ANGLE_DIR/src/libANGLE/params.cpp \ + $$ANGLE_DIR/src/libANGLE/Path.cpp \ $$ANGLE_DIR/src/libANGLE/Platform.cpp \ $$ANGLE_DIR/src/libANGLE/Program.cpp \ + $$ANGLE_DIR/src/libANGLE/ProgramLinkedResources.cpp \ + $$ANGLE_DIR/src/libANGLE/ProgramPipeline.cpp \ $$ANGLE_DIR/src/libANGLE/Query.cpp \ $$ANGLE_DIR/src/libANGLE/queryconversions.cpp \ + $$ANGLE_DIR/src/libANGLE/queryutils.cpp \ $$ANGLE_DIR/src/libANGLE/Renderbuffer.cpp \ $$ANGLE_DIR/src/libANGLE/ResourceManager.cpp \ $$ANGLE_DIR/src/libANGLE/Sampler.cpp \ $$ANGLE_DIR/src/libANGLE/Shader.cpp \ $$ANGLE_DIR/src/libANGLE/State.cpp \ + $$ANGLE_DIR/src/libANGLE/Stream.cpp \ $$ANGLE_DIR/src/libANGLE/Surface.cpp \ $$ANGLE_DIR/src/libANGLE/Texture.cpp \ + $$ANGLE_DIR/src/libANGLE/Thread.cpp \ $$ANGLE_DIR/src/libANGLE/TransformFeedback.cpp \ $$ANGLE_DIR/src/libANGLE/Uniform.cpp \ $$ANGLE_DIR/src/libANGLE/validationEGL.cpp \ $$ANGLE_DIR/src/libANGLE/validationES.cpp \ $$ANGLE_DIR/src/libANGLE/validationES2.cpp \ $$ANGLE_DIR/src/libANGLE/validationES3.cpp \ + $$ANGLE_DIR/src/libANGLE/validationES31.cpp \ + $$ANGLE_DIR/src/libANGLE/VaryingPacking.cpp \ $$ANGLE_DIR/src/libANGLE/VertexArray.cpp \ $$ANGLE_DIR/src/libANGLE/VertexAttribute.cpp \ + $$ANGLE_DIR/src/libANGLE/WorkerThread.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/ContextImpl.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/DeviceImpl.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/DisplayImpl.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/Renderer.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/driver_utils.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/Format_table_autogen.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/load_functions_table_autogen.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/renderer_utils.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/SurfaceImpl.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/TextureImpl.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/BufferD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/CompilerD3D.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/copyimage.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DeviceD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DisplayD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DynamicHLSL.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/EGLImageD3D.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/formatutilsD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/FramebufferD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/HLSLCompiler.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ImageD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/IndexBuffer.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/IndexDataManager.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/loadimage.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/loadimage_etc.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/NativeWindowD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ProgramD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RenderbufferD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RendererD3D.cpp \ @@ -227,22 +234,20 @@ SOURCES += \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ShaderD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ShaderExecutableD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/SurfaceD3D.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/SwapChainD3D.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/TextureD3D.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/TransformFeedbackD3D.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/VaryingPacking.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/VertexBuffer.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/VertexDataManager.cpp \ $$ANGLE_DIR/src/libGLESv2/entry_points_egl.cpp \ $$ANGLE_DIR/src/libGLESv2/entry_points_egl_ext.cpp \ - $$ANGLE_DIR/src/libGLESv2/entry_points_gles_2_0.cpp \ + $$ANGLE_DIR/src/libGLESv2/entry_points_gles_2_0_autogen.cpp \ + $$ANGLE_DIR/src/libGLESv2/proc_table_autogen.cpp \ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_2_0_ext.cpp \ - $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_0.cpp \ - $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_0_ext.cpp \ + $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_0_autogen.cpp \ + $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_1_autogen.cpp \ $$ANGLE_DIR/src/libGLESv2/global_state.cpp \ $$ANGLE_DIR/src/libGLESv2/libGLESv2.cpp -SSE2_SOURCES += $$ANGLE_DIR/src/libANGLE/renderer/d3d/loadimageSSE2.cpp - angle_d3d11 { HEADERS += \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Blit11.h \ @@ -256,8 +261,7 @@ angle_d3d11 { $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Image11.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/IndexBuffer11.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/internal_format_initializer_table.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/load_functions_table.h \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/NativeWindow11.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Query11.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Renderer11.h \ @@ -267,7 +271,6 @@ angle_d3d11 { $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/StateManager11.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/swizzle_format_info.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Trim11.h \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/texture_format_table.h \ @@ -277,7 +280,9 @@ angle_d3d11 { $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Context11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/dxgi_format_map_autogen.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/dxgi_support_table.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Fence11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp \ @@ -285,21 +290,24 @@ angle_d3d11 { $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Image11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/IndexBuffer11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/internal_format_initializer_table.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/load_functions_table_autogen.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/ProgramPipeline11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Query11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/ResourceManager11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/StateManager11.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/StreamProducerNV12.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/swizzle_format_info_autogen.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Trim11.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/texture_format_table.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.cpp } @@ -327,12 +335,14 @@ angle_d3d11 { SOURCES += \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Blit9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Buffer9.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Context9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/DebugAnnotator9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Fence9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Framebuffer9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/formatutils9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Image9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/IndexBuffer9.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/NativeWindow9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Query9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp \ @@ -343,7 +353,7 @@ angle_d3d11 { $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/TextureStorage9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/VertexBuffer9.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.cpp \ - $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.cpp \ $$ANGLE_DIR/src/third_party/systeminfo/SystemInfo.cpp } else { HEADERS += \ @@ -354,6 +364,7 @@ angle_d3d11 { SOURCES += \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp \ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp } @@ -367,9 +378,6 @@ BLITVS = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs standardvs.input = BLITVS standardvs.type = vs_2_0 standardvs.output = standardvs.h -flipyvs.input = BLITVS -flipyvs.type = vs_2_0 -flipyvs.output = flipyvs.h BLITPS = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps passthroughps.input = BLITPS @@ -378,9 +386,21 @@ passthroughps.output = passthroughps.h luminanceps.input = BLITPS luminanceps.type = ps_2_0 luminanceps.output = luminanceps.h +luminancepremultps.input = BLITPS +luminancepremultps.type = ps_2_0 +luminancepremultps.output = luminancepremultps.h +luminanceunmultps.input = BLITPS +luminanceunmultps.type = ps_2_0 +luminanceunmultps.output = luminanceunmultps.h componentmaskps.input = BLITPS componentmaskps.type = ps_2_0 componentmaskps.output = componentmaskps.h +componentmaskpremultps.input = BLITPS +componentmaskpremultps.type = ps_2_0 +componentmaskpremultps.output = componentmaskpremultps.h +componentmaskunmultps.input = BLITPS +componentmaskunmultps.type = ps_2_0 +componentmaskunmultps.output = componentmaskunmultps.h PASSTHROUGH2D = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/Passthrough2D11.hlsl VS_Passthrough2D.input = PASSTHROUGH2D @@ -431,29 +451,104 @@ PS_PassthroughR2DUI.output = passthroughr2dui11ps.h PS_PassthroughR2DI.input = PASSTHROUGH2D PS_PassthroughR2DI.type = ps_4_0 PS_PassthroughR2DI.output = passthroughr2di11ps.h +PS_PassthroughA2D.input = PASSTHROUGH2D +PS_PassthroughA2D.type = ps_4_0_level_9_3 +PS_PassthroughA2D.output = passthrougha2d11ps.h +PS_PassthroughRGBA2DMS.input = PASSTHROUGH2D +PS_PassthroughRGBA2DMS.type = ps_4_1 +PS_PassthroughRGBA2DMS.output = passthroughrgba2dms11ps.h CLEAR = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/Clear11.hlsl -VS_ClearFloat.input = CLEAR -VS_ClearFloat.type = vs_4_0_level_9_3 -VS_ClearFloat.output = clearfloat11vs.h +VS_Clear_FL9.input = CLEAR +VS_Clear_FL9.type = vs_4_0_level_9_3 +VS_Clear_FL9.output = clear11_fl9vs.h PS_ClearFloat_FL9.input = CLEAR PS_ClearFloat_FL9.type = ps_4_0_level_9_3 PS_ClearFloat_FL9.output = clearfloat11_fl9ps.h -PS_ClearFloat.input = CLEAR -PS_ClearFloat.type = ps_4_0 -PS_ClearFloat.output = clearfloat11ps.h -VS_ClearUint.input = CLEAR -VS_ClearUint.type = vs_4_0 -VS_ClearUint.output = clearuint11vs.h -PS_ClearUint.input = CLEAR -PS_ClearUint.type = ps_4_0 -PS_ClearUint.output = clearuint11ps.h -VS_ClearSint.input = CLEAR -VS_ClearSint.type = vs_4_0 -VS_ClearSint.output = clearsint11vs.h -PS_ClearSint.input = CLEAR -PS_ClearSint.type = ps_4_0 -PS_ClearSint.output = clearsint11ps.h +VS_Clear.input = CLEAR +VS_Clear.type = vs_4_0 +VS_Clear.output = clear11vs.h +VS_Multiview_Clear.input = CLEAR +VS_Multiview_Clear.type = vs_4_0 +VS_Multiview_Clear.output = clear11multiviewvs.h +GS_Multiview_Clear.input = CLEAR +GS_Multiview_Clear.type = gs_4_0 +GS_Multiview_Clear.output = clear11multiviewgs.h +PS_ClearDepth.input = CLEAR +PS_ClearDepth.type = ps_4_0 +PS_ClearDepth.output = cleardepth11ps.h +PS_ClearFloat1.input = CLEAR +PS_ClearFloat1.type = ps_4_0 +PS_ClearFloat1.output = clearfloat11ps1.h +PS_ClearFloat2.input = CLEAR +PS_ClearFloat2.type = ps_4_0 +PS_ClearFloat2.output = clearfloat11ps2.h +PS_ClearFloat3.input = CLEAR +PS_ClearFloat3.type = ps_4_0 +PS_ClearFloat3.output = clearfloat11ps3.h +PS_ClearFloat4.input = CLEAR +PS_ClearFloat4.type = ps_4_0 +PS_ClearFloat4.output = clearfloat11ps4.h +PS_ClearFloat5.input = CLEAR +PS_ClearFloat5.type = ps_4_0 +PS_ClearFloat5.output = clearfloat11ps5.h +PS_ClearFloat6.input = CLEAR +PS_ClearFloat6.type = ps_4_0 +PS_ClearFloat6.output = clearfloat11ps6.h +PS_ClearFloat7.input = CLEAR +PS_ClearFloat7.type = ps_4_0 +PS_ClearFloat7.output = clearfloat11ps7.h +PS_ClearFloat8.input = CLEAR +PS_ClearFloat8.type = ps_4_0 +PS_ClearFloat8.output = clearfloat11ps8.h +PS_ClearUint1.input = CLEAR +PS_ClearUint1.type = ps_4_0 +PS_ClearUint1.output = clearuint11ps1.h +PS_ClearUint2.input = CLEAR +PS_ClearUint2.type = ps_4_0 +PS_ClearUint2.output = clearuint11ps2.h +PS_ClearUint3.input = CLEAR +PS_ClearUint3.type = ps_4_0 +PS_ClearUint3.output = clearuint11ps3.h +PS_ClearUint4.input = CLEAR +PS_ClearUint4.type = ps_4_0 +PS_ClearUint4.output = clearuint11ps4.h +PS_ClearUint5.input = CLEAR +PS_ClearUint5.type = ps_4_0 +PS_ClearUint5.output = clearuint11ps5.h +PS_ClearUint6.input = CLEAR +PS_ClearUint6.type = ps_4_0 +PS_ClearUint6.output = clearuint11ps6.h +PS_ClearUint7.input = CLEAR +PS_ClearUint7.type = ps_4_0 +PS_ClearUint7.output = clearuint11ps7.h +PS_ClearUint8.input = CLEAR +PS_ClearUint8.type = ps_4_0 +PS_ClearUint8.output = clearuint11ps8.h +PS_ClearSint1.input = CLEAR +PS_ClearSint1.type = ps_4_0 +PS_ClearSint1.output = clearsint11ps1.h +PS_ClearSint2.input = CLEAR +PS_ClearSint2.type = ps_4_0 +PS_ClearSint2.output = clearsint11ps2.h +PS_ClearSint3.input = CLEAR +PS_ClearSint3.type = ps_4_0 +PS_ClearSint3.output = clearsint11ps3.h +PS_ClearSint4.input = CLEAR +PS_ClearSint4.type = ps_4_0 +PS_ClearSint4.output = clearsint11ps4.h +PS_ClearSint5.input = CLEAR +PS_ClearSint5.type = ps_4_0 +PS_ClearSint5.output = clearsint11ps5.h +PS_ClearSint6.input = CLEAR +PS_ClearSint6.type = ps_4_0 +PS_ClearSint6.output = clearsint11ps6.h +PS_ClearSint7.input = CLEAR +PS_ClearSint7.type = ps_4_0 +PS_ClearSint7.output = clearsint11ps7.h +PS_ClearSint8.input = CLEAR +PS_ClearSint8.type = ps_4_0 +PS_ClearSint8.output = clearsint11ps8.h PASSTHROUGH3D = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/Passthrough3D11.hlsl VS_Passthrough3D.input = PASSTHROUGH3D @@ -551,15 +646,81 @@ PS_BufferToTexture_4UI.input = BUFFERTOTEXTURE PS_BufferToTexture_4UI.type = ps_4_0 PS_BufferToTexture_4UI.output = buffertotexture11_ps_4ui.h +MULTIPLYALPHA = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/MultiplyAlpha.hlsl +PS_FtoF_PM_RGBA.input = MULTIPLYALPHA +PS_FtoF_PM_RGBA.type = ps_4_0 +PS_FtoF_PM_RGBA.output = multiplyalpha_ftof_pm_rgba_ps.h +PS_FtoF_UM_RGBA.input = MULTIPLYALPHA +PS_FtoF_UM_RGBA.type = ps_4_0 +PS_FtoF_UM_RGBA.output = multiplyalpha_ftof_um_rgba_ps.h +PS_FtoF_PM_RGB.input = MULTIPLYALPHA +PS_FtoF_PM_RGB.type = ps_4_0 +PS_FtoF_PM_RGB.output = multiplyalpha_ftof_pm_rgb_ps.h +PS_FtoF_UM_RGB.input = MULTIPLYALPHA +PS_FtoF_UM_RGB.type = ps_4_0 +PS_FtoF_UM_RGB.output = multiplyalpha_ftof_um_rgb_ps.h +PS_FtoU_PT_RGBA.input = MULTIPLYALPHA +PS_FtoU_PT_RGBA.type = ps_4_0 +PS_FtoU_PT_RGBA.output = multiplyalpha_ftou_pt_rgba_ps.h +PS_FtoU_PM_RGBA.input = MULTIPLYALPHA +PS_FtoU_PM_RGBA.type = ps_4_0 +PS_FtoU_PM_RGBA.output = multiplyalpha_ftou_pm_rgba_ps.h +PS_FtoU_UM_RGBA.input = MULTIPLYALPHA +PS_FtoU_UM_RGBA.type = ps_4_0 +PS_FtoU_UM_RGBA.output = multiplyalpha_ftou_um_rgba_ps.h +PS_FtoU_PT_RGB.input = MULTIPLYALPHA +PS_FtoU_PT_RGB.type = ps_4_0 +PS_FtoU_PT_RGB.output = multiplyalpha_ftou_pt_rgb_ps.h +PS_FtoU_PM_RGB.input = MULTIPLYALPHA +PS_FtoU_PM_RGB.type = ps_4_0 +PS_FtoU_PM_RGB.output = multiplyalpha_ftou_pm_rgb_ps.h +PS_FtoU_UM_RGB.input = MULTIPLYALPHA +PS_FtoU_UM_RGB.type = ps_4_0 +PS_FtoU_UM_RGB.output = multiplyalpha_ftou_um_rgb_ps.h +PS_FtoF_PM_LUMA.input = MULTIPLYALPHA +PS_FtoF_PM_LUMA.type = ps_4_0 +PS_FtoF_PM_LUMA.output = multiplyalpha_ftof_pm_luma_ps.h +PS_FtoF_UM_LUMA.input = MULTIPLYALPHA +PS_FtoF_UM_LUMA.type = ps_4_0 +PS_FtoF_UM_LUMA.output = multiplyalpha_ftof_um_luma_ps.h +PS_FtoF_PM_LUMAALPHA.input = MULTIPLYALPHA +PS_FtoF_PM_LUMAALPHA.type = ps_4_0 +PS_FtoF_PM_LUMAALPHA.output = multiplyalpha_ftof_pm_lumaalpha_ps.h +PS_FtoF_UM_LUMAALPHA.input = MULTIPLYALPHA +PS_FtoF_UM_LUMAALPHA.type = ps_4_0 +PS_FtoF_UM_LUMAALPHA.output = multiplyalpha_ftof_um_lumaalpha_ps.h + +RESOLVEDEPTHSTENCIL = \ + $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/ResolveDepthStencil.hlsl +VS_ResolveDepthStencil.input = RESOLVEDEPTHSTENCIL +VS_ResolveDepthStencil.type = vs_4_1 +VS_ResolveDepthStencil.output = resolvedepthstencil11_vs.h +PS_ResolveDepth.input = RESOLVEDEPTHSTENCIL +PS_ResolveDepth.type = ps_4_1 +PS_ResolveDepth.output = resolvedepth11_ps.h +PS_ResolveDepthStencil.input = RESOLVEDEPTHSTENCIL +PS_ResolveDepthStencil.type = ps_4_1 +PS_ResolveDepthStencil.output = resolvedepthstencil11_ps.h +PS_ResolveStencil.input = RESOLVEDEPTHSTENCIL +PS_ResolveStencil.type = ps_4_1 +PS_ResolveStencil.output = resolvestencil11_ps.h + # D3D11 angle_d3d11: SHADERS = VS_Passthrough2D \ PS_PassthroughRGB2D PS_PassthroughRGB2DUI PS_PassthroughRGB2DI \ PS_PassthroughRGBA2D PS_PassthroughRGBA2DUI PS_PassthroughRGBA2DI \ PS_PassthroughRG2D PS_PassthroughRG2DUI PS_PassthroughRG2DI \ PS_PassthroughR2D PS_PassthroughR2DUI PS_PassthroughR2DI \ + PS_PassthroughA2D \ PS_PassthroughLum2D PS_PassthroughLumAlpha2D PS_PassthroughDepth2D \ - VS_ClearFloat VS_ClearUint VS_ClearSint \ - PS_ClearFloat PS_ClearFloat_FL9 PS_ClearUint PS_ClearSint \ + VS_Clear_FL9 PS_ClearFloat_FL9 VS_Clear VS_Multiview_Clear \ + GS_Multiview_Clear PS_ClearDepth \ + PS_ClearFloat1 PS_ClearFloat2 PS_ClearFloat3 PS_ClearFloat4 PS_ClearFloat5 \ + PS_ClearFloat6 PS_ClearFloat7 PS_ClearFloat8 \ + PS_ClearUint1 PS_ClearUint2 PS_ClearUint3 PS_ClearUint4 \ + PS_ClearUint5 PS_ClearUint6 PS_ClearUint7 PS_ClearUint8 \ + PS_ClearSint1 PS_ClearSint2 PS_ClearSint3 PS_ClearSint4 \ + PS_ClearSint5 PS_ClearSint6 PS_ClearSint7 PS_ClearSint8 \ VS_Passthrough3D GS_Passthrough3D \ PS_PassthroughRGBA3D PS_PassthroughRGBA3DUI PS_PassthroughRGBA3DI \ PS_PassthroughRGB3D PS_PassthroughRGB3DUI PS_PassthroughRGB3DI \ @@ -570,10 +731,22 @@ angle_d3d11: SHADERS = VS_Passthrough2D \ PS_SwizzleF3D PS_SwizzleI3D PS_SwizzleUI3D \ PS_SwizzleF2DArray PS_SwizzleI2DArray PS_SwizzleUI2DArray \ VS_BufferToTexture GS_BufferToTexture \ - PS_BufferToTexture_4F PS_BufferToTexture_4I PS_BufferToTexture_4UI + PS_BufferToTexture_4F PS_BufferToTexture_4I PS_BufferToTexture_4UI \ + PS_FtoF_PM_RGBA PS_FtoF_UM_RGBA PS_FtoF_PM_RGB PS_FtoF_UM_RGB \ + PS_FtoU_PT_RGBA PS_FtoU_PM_RGBA PS_FtoU_UM_RGBA \ + PS_FtoU_PT_RGB PS_FtoU_PM_RGB PS_FtoU_UM_RGB \ + PS_FtoF_PM_LUMA PS_FtoF_UM_LUMA \ + PS_FtoF_PM_LUMAALPHA PS_FtoF_UM_LUMAALPHA \ + VS_ResolveDepthStencil PS_ResolveDepth PS_ResolveDepthStencil PS_ResolveStencil + +# This shader causes an internal compiler error in mingw73. Re-enable it, when +# our mingw version can handle it. +!mingw: angle_d3d11: SHADERS += PS_PassthroughRGBA2DMS # D3D9 -!winrt: SHADERS += standardvs flipyvs passthroughps luminanceps componentmaskps +!winrt: SHADERS += standardvs passthroughps \ + luminanceps luminancepremultps luminanceunmultps \ + componentmaskps componentmaskpremultps componentmaskunmultps # Generate headers for (SHADER, SHADERS) { @@ -597,7 +770,6 @@ gles2_headers.files = \ gles2_headers.path = $$[QT_INSTALL_HEADERS]/QtANGLE/GLES2 gles3_headers.files = \ $$ANGLE_DIR/include/GLES3/gl3.h \ - $$ANGLE_DIR/include/GLES3/gl3ext.h \ $$ANGLE_DIR/include/GLES3/gl3platform.h gles3_headers.path = $$[QT_INSTALL_HEADERS]/QtANGLE/GLES3 INSTALLS += khr_headers gles2_headers diff --git a/src/angle/src/compiler/preprocessor/preprocessor.pro b/src/angle/src/compiler/preprocessor/preprocessor.pro index 9d0728a72d..66bc59a5ff 100644 --- a/src/angle/src/compiler/preprocessor/preprocessor.pro +++ b/src/angle/src/compiler/preprocessor/preprocessor.pro @@ -3,7 +3,10 @@ include($$OUT_PWD/../../../../gui/qtgui-config.pri) qtConfig(dynamicgl): CONFIG += not_installed include(../../config.pri) -INCLUDEPATH = $$ANGLE_DIR/src/compiler/preprocessor +INCLUDEPATH = \ + $$ANGLE_DIR/src \ + $$ANGLE_DIR/src/common/third_party/base \ + $$ANGLE_DIR/src/compiler/preprocessor DEFINES += _SECURE_SCL=0 @@ -20,12 +23,10 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/preprocessor/DirectiveParser.h \ $$ANGLE_DIR/src/compiler/preprocessor/ExpressionParser.h \ $$ANGLE_DIR/src/compiler/preprocessor/Input.h \ - $$ANGLE_DIR/src/compiler/preprocessor/length_limits.h \ $$ANGLE_DIR/src/compiler/preprocessor/Lexer.h \ $$ANGLE_DIR/src/compiler/preprocessor/Macro.h \ $$ANGLE_DIR/src/compiler/preprocessor/MacroExpander.h \ $$ANGLE_DIR/src/compiler/preprocessor/numeric_lex.h \ - $$ANGLE_DIR/src/compiler/preprocessor/pp_utils.h \ $$ANGLE_DIR/src/compiler/preprocessor/Preprocessor.h \ $$ANGLE_DIR/src/compiler/preprocessor/SourceLocation.h \ $$ANGLE_DIR/src/compiler/preprocessor/Token.h \ diff --git a/src/angle/src/compiler/translator.pro b/src/angle/src/compiler/translator.pro index 398b9230cc..c1bf73bdc6 100644 --- a/src/angle/src/compiler/translator.pro +++ b/src/angle/src/compiler/translator.pro @@ -5,7 +5,8 @@ include(../config.pri) INCLUDEPATH += \ $$ANGLE_DIR/src \ - $$ANGLE_DIR/include + $$ANGLE_DIR/include \ + $$ANGLE_DIR/src/common/third_party/base DEFINES += _SECURE_SCL=0 _LIB ANGLE_TRANSLATOR_IMPLEMENTATION ANGLE_TRANSLATOR_STATIC ANGLE_ENABLE_HLSL @@ -13,11 +14,9 @@ FLEX_SOURCES = $$ANGLE_DIR/src/compiler/translator/glslang.l BISON_SOURCES = $$ANGLE_DIR/src/compiler/translator/glslang.y HEADERS += \ - $$ANGLE_DIR/include/GLSLANG/ResourceLimits.h \ $$ANGLE_DIR/include/GLSLANG/ShaderLang.h \ $$ANGLE_DIR/include/GLSLANG/ShaderVars.h \ $$ANGLE_DIR/src/common/angleutils.h \ - $$ANGLE_DIR/src/common/blocklayout.h \ $$ANGLE_DIR/src/common/debug.h \ $$ANGLE_DIR/src/common/platform.h \ $$ANGLE_DIR/src/common/tls.h \ @@ -35,27 +34,18 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/translator/Common.h \ $$ANGLE_DIR/src/compiler/translator/Compiler.h \ $$ANGLE_DIR/src/compiler/translator/ConstantUnion.h \ - $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraphBuilder.h \ - $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraph.h \ - $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraphOutput.h \ $$ANGLE_DIR/src/compiler/translator/Diagnostics.h \ $$ANGLE_DIR/src/compiler/translator/DirectiveHandler.h \ $$ANGLE_DIR/src/compiler/translator/ExtensionBehavior.h \ $$ANGLE_DIR/src/compiler/translator/EmulatePrecision.h \ $$ANGLE_DIR/src/compiler/translator/FlagStd140Structs.h \ - $$ANGLE_DIR/src/compiler/translator/ForLoopUnroll.h \ $$ANGLE_DIR/src/compiler/translator/HashNames.h \ $$ANGLE_DIR/src/compiler/translator/InfoSink.h \ $$ANGLE_DIR/src/compiler/translator/InitializeDll.h \ $$ANGLE_DIR/src/compiler/translator/Initialize.h \ - $$ANGLE_DIR/src/compiler/translator/InitializeParseContext.h \ $$ANGLE_DIR/src/compiler/translator/InitializeVariables.h \ - $$ANGLE_DIR/src/compiler/translator/intermediate.h \ $$ANGLE_DIR/src/compiler/translator/IntermNode.h \ - $$ANGLE_DIR/src/compiler/translator/LoopInfo.h \ - $$ANGLE_DIR/src/compiler/translator/MMap.h \ $$ANGLE_DIR/src/compiler/translator/NodeSearch.h \ - $$ANGLE_DIR/src/compiler/translator/osinclude.h \ $$ANGLE_DIR/src/compiler/translator/Operator.h \ $$ANGLE_DIR/src/compiler/translator/OutputESSL.h \ $$ANGLE_DIR/src/compiler/translator/OutputGLSLBase.h \ @@ -63,25 +53,20 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/translator/OutputHLSL.h \ $$ANGLE_DIR/src/compiler/translator/ParseContext.h \ $$ANGLE_DIR/src/compiler/translator/PoolAlloc.h \ - $$ANGLE_DIR/src/compiler/translator/PruneEmptyDeclarations.h \ $$ANGLE_DIR/src/compiler/translator/Pragma.h \ $$ANGLE_DIR/src/compiler/translator/RegenerateStructNames.h \ $$ANGLE_DIR/src/compiler/translator/RemovePow.h \ $$ANGLE_DIR/src/compiler/translator/RemoveDynamicIndexing.h \ $$ANGLE_DIR/src/compiler/translator/RemoveSwitchFallThrough.h \ - $$ANGLE_DIR/src/compiler/translator/RenameFunction.h \ $$ANGLE_DIR/src/compiler/translator/RewriteDoWhile.h \ $$ANGLE_DIR/src/compiler/translator/RewriteElseBlocks.h \ $$ANGLE_DIR/src/compiler/translator/SeparateArrayInitialization.h \ $$ANGLE_DIR/src/compiler/translator/SeparateDeclarations.h \ $$ANGLE_DIR/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.h \ $$ANGLE_DIR/src/compiler/translator/SearchSymbol.h \ - $$ANGLE_DIR/src/compiler/translator/ShHandle.h \ $$ANGLE_DIR/src/compiler/translator/SeparateExpressionsReturningArrays.h \ $$ANGLE_DIR/src/compiler/translator/StructureHLSL.h \ $$ANGLE_DIR/src/compiler/translator/SymbolTable.h \ - $$ANGLE_DIR/src/compiler/translator/timing/RestrictFragmentShaderTiming.h \ - $$ANGLE_DIR/src/compiler/translator/timing/RestrictVertexShaderTiming.h \ $$ANGLE_DIR/src/compiler/translator/TranslatorESSL.h \ $$ANGLE_DIR/src/compiler/translator/TranslatorGLSL.h \ $$ANGLE_DIR/src/compiler/translator/TranslatorHLSL.h \ @@ -95,7 +80,6 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/translator/ValidateLimitations.h \ $$ANGLE_DIR/src/compiler/translator/ValidateOutputs.h \ $$ANGLE_DIR/src/compiler/translator/ValidateSwitch.h \ - $$ANGLE_DIR/src/compiler/translator/VariableInfo.h \ $$ANGLE_DIR/src/compiler/translator/VariablePacker.h \ $$ANGLE_DIR/src/compiler/translator/VersionGLSL.h \ $$ANGLE_DIR/src/third_party/compiler/ArrayBoundsClamper.h @@ -104,77 +88,108 @@ HEADERS += \ SOURCES += \ $$ANGLE_DIR/src/common/debug.cpp \ $$ANGLE_DIR/src/common/tls.cpp \ + $$ANGLE_DIR/src/compiler/translator/AddAndTrueToLoopCondition.cpp \ + $$ANGLE_DIR/src/compiler/translator/AddDefaultReturnStatements.cpp \ $$ANGLE_DIR/src/compiler/translator/ArrayReturnValueToOutParameter.cpp \ $$ANGLE_DIR/src/compiler/translator/ASTMetadataHLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/blocklayout.cpp \ $$ANGLE_DIR/src/compiler/translator/blocklayoutHLSL.cpp \ + $$ANGLE_DIR/src/compiler/translator/BreakVariableAliasingInInnerLoops.cpp \ $$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulator.cpp \ $$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulatorGLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/Cache.cpp \ $$ANGLE_DIR/src/compiler/translator/CallDAG.cpp \ + $$ANGLE_DIR/src/compiler/translator/ClampPointSize.cpp \ $$ANGLE_DIR/src/compiler/translator/CodeGen.cpp \ + $$ANGLE_DIR/src/compiler/translator/CollectVariables.cpp \ $$ANGLE_DIR/src/compiler/translator/Compiler.cpp \ - $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraph.cpp \ - $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraphBuilder.cpp \ - $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraphOutput.cpp \ - $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraphTraverse.cpp \ + $$ANGLE_DIR/src/compiler/translator/ConstantUnion.cpp \ + $$ANGLE_DIR/src/compiler/translator/DeclareAndInitBuiltinsForInstancedMultiview.cpp \ + $$ANGLE_DIR/src/compiler/translator/DeferGlobalInitializers.cpp \ $$ANGLE_DIR/src/compiler/translator/Diagnostics.cpp \ $$ANGLE_DIR/src/compiler/translator/DirectiveHandler.cpp \ + $$ANGLE_DIR/src/compiler/translator/emulated_builtin_functions_hlsl_autogen.cpp \ + $$ANGLE_DIR/src/compiler/translator/EmulateGLFragColorBroadcast.cpp \ $$ANGLE_DIR/src/compiler/translator/EmulatePrecision.cpp \ + $$ANGLE_DIR/src/compiler/translator/ExpandIntegerPowExpressions.cpp \ + $$ANGLE_DIR/src/compiler/translator/ExtensionBehavior.cpp \ + $$ANGLE_DIR/src/compiler/translator/ExtensionGLSL.cpp \ + $$ANGLE_DIR/src/compiler/translator/FindMain.cpp \ + $$ANGLE_DIR/src/compiler/translator/FindSymbolNode.cpp \ $$ANGLE_DIR/src/compiler/translator/FlagStd140Structs.cpp \ - $$ANGLE_DIR/src/compiler/translator/ForLoopUnroll.cpp \ + $$ANGLE_DIR/src/compiler/translator/HashNames.cpp \ + $$ANGLE_DIR/src/compiler/translator/ImageFunctionHLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/InfoSink.cpp \ $$ANGLE_DIR/src/compiler/translator/Initialize.cpp \ $$ANGLE_DIR/src/compiler/translator/InitializeDll.cpp \ - $$ANGLE_DIR/src/compiler/translator/InitializeParseContext.cpp \ $$ANGLE_DIR/src/compiler/translator/InitializeVariables.cpp \ - $$ANGLE_DIR/src/compiler/translator/Intermediate.cpp \ $$ANGLE_DIR/src/compiler/translator/IntermNode.cpp \ - $$ANGLE_DIR/src/compiler/translator/intermOut.cpp \ + $$ANGLE_DIR/src/compiler/translator/IntermNodePatternMatcher.cpp \ + $$ANGLE_DIR/src/compiler/translator/IntermNode_util.cpp \ $$ANGLE_DIR/src/compiler/translator/IntermTraverse.cpp \ - $$ANGLE_DIR/src/compiler/translator/LoopInfo.cpp \ + $$ANGLE_DIR/src/compiler/translator/IsASTDepthBelowLimit.cpp \ $$ANGLE_DIR/src/compiler/translator/Operator.cpp \ $$ANGLE_DIR/src/compiler/translator/OutputESSL.cpp \ $$ANGLE_DIR/src/compiler/translator/OutputGLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/OutputGLSLBase.cpp \ $$ANGLE_DIR/src/compiler/translator/OutputHLSL.cpp \ + $$ANGLE_DIR/src/compiler/translator/OutputTree.cpp \ + $$ANGLE_DIR/src/compiler/translator/OutputVulkanGLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/ParseContext.cpp \ $$ANGLE_DIR/src/compiler/translator/PoolAlloc.cpp \ - $$ANGLE_DIR/src/compiler/translator/PruneEmptyDeclarations.cpp \ + $$ANGLE_DIR/src/compiler/translator/PruneNoOps.cpp \ + $$ANGLE_DIR/src/compiler/translator/QualifierTypes.cpp \ + $$ANGLE_DIR/src/compiler/translator/RecordConstantPrecision.cpp \ $$ANGLE_DIR/src/compiler/translator/RegenerateStructNames.cpp \ - $$ANGLE_DIR/src/compiler/translator/RemovePow.cpp \ + $$ANGLE_DIR/src/compiler/translator/RemoveArrayLengthMethod.cpp \ $$ANGLE_DIR/src/compiler/translator/RemoveDynamicIndexing.cpp \ + $$ANGLE_DIR/src/compiler/translator/RemoveEmptySwitchStatements.cpp \ + $$ANGLE_DIR/src/compiler/translator/RemoveInvariantDeclaration.cpp \ + $$ANGLE_DIR/src/compiler/translator/RemoveNoOpCasesFromEndOfSwitchStatements.cpp \ + $$ANGLE_DIR/src/compiler/translator/RemovePow.cpp \ $$ANGLE_DIR/src/compiler/translator/RemoveSwitchFallThrough.cpp \ + $$ANGLE_DIR/src/compiler/translator/RemoveUnreferencedVariables.cpp \ $$ANGLE_DIR/src/compiler/translator/RewriteDoWhile.cpp \ $$ANGLE_DIR/src/compiler/translator/RewriteElseBlocks.cpp \ - $$ANGLE_DIR/src/compiler/translator/SeparateArrayInitialization.cpp \ - $$ANGLE_DIR/src/compiler/translator/SeparateDeclarations.cpp \ + $$ANGLE_DIR/src/compiler/translator/RewriteTexelFetchOffset.cpp \ + $$ANGLE_DIR/src/compiler/translator/RewriteUnaryMinusOperatorFloat.cpp \ + $$ANGLE_DIR/src/compiler/translator/RewriteUnaryMinusOperatorInt.cpp \ + $$ANGLE_DIR/src/compiler/translator/RunAtTheEndOfShader.cpp \ $$ANGLE_DIR/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp \ $$ANGLE_DIR/src/compiler/translator/SearchSymbol.cpp \ + $$ANGLE_DIR/src/compiler/translator/SeparateArrayInitialization.cpp \ + $$ANGLE_DIR/src/compiler/translator/SeparateDeclarations.cpp \ + $$ANGLE_DIR/src/compiler/translator/SeparateExpressionsReturningArrays.cpp \ $$ANGLE_DIR/src/compiler/translator/ShaderLang.cpp \ $$ANGLE_DIR/src/compiler/translator/ShaderVars.cpp \ - $$ANGLE_DIR/src/compiler/translator/SeparateExpressionsReturningArrays.cpp \ + $$ANGLE_DIR/src/compiler/translator/SimplifyLoopConditions.cpp \ + $$ANGLE_DIR/src/compiler/translator/SplitSequenceOperator.cpp \ $$ANGLE_DIR/src/compiler/translator/StructureHLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/SymbolTable.cpp \ - $$ANGLE_DIR/src/compiler/translator/timing/RestrictFragmentShaderTiming.cpp \ - $$ANGLE_DIR/src/compiler/translator/timing/RestrictVertexShaderTiming.cpp \ + $$ANGLE_DIR/src/compiler/translator/SymbolUniqueId.cpp \ + $$ANGLE_DIR/src/compiler/translator/TextureFunctionHLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/TranslatorESSL.cpp \ $$ANGLE_DIR/src/compiler/translator/TranslatorGLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/TranslatorHLSL.cpp \ + $$ANGLE_DIR/src/compiler/translator/TranslatorVulkan.cpp \ $$ANGLE_DIR/src/compiler/translator/Types.cpp \ - $$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuitToIf.cpp \ $$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuitAST.cpp \ + $$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuitToIf.cpp \ $$ANGLE_DIR/src/compiler/translator/UniformHLSL.cpp \ + $$ANGLE_DIR/src/compiler/translator/UseInterfaceBlockFields.cpp \ $$ANGLE_DIR/src/compiler/translator/UtilsHLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/util.cpp \ $$ANGLE_DIR/src/compiler/translator/ValidateGlobalInitializer.cpp \ $$ANGLE_DIR/src/compiler/translator/ValidateLimitations.cpp \ + $$ANGLE_DIR/src/compiler/translator/ValidateMaxParameters.cpp \ $$ANGLE_DIR/src/compiler/translator/ValidateOutputs.cpp \ $$ANGLE_DIR/src/compiler/translator/ValidateSwitch.cpp \ - $$ANGLE_DIR/src/compiler/translator/VariableInfo.cpp \ $$ANGLE_DIR/src/compiler/translator/VariablePacker.cpp \ + $$ANGLE_DIR/src/compiler/translator/ValidateVaryingLocations.cpp \ $$ANGLE_DIR/src/compiler/translator/VersionGLSL.cpp \ + $$ANGLE_DIR/src/compiler/translator/VectorizeVectorScalarArithmetic.cpp \ + $$ANGLE_DIR/src/compiler/translator/WrapSwitchStatementsInBlocks.cpp \ $$ANGLE_DIR/src/third_party/compiler/ArrayBoundsClamper.cpp diff --git a/src/angle/src/config.pri b/src/angle/src/config.pri index 4beb095217..5c521281a6 100644 --- a/src/angle/src/config.pri +++ b/src/angle/src/config.pri @@ -55,7 +55,7 @@ CONFIG(debug, debug|release) { !isEmpty(BUILD_PASS): BUILDSUBDIR = $$lower($$BUILD_PASS)/ # c++11 is needed by MinGW to get support for unordered_map. -CONFIG += stl exceptions c++11 +CONFIG += stl exceptions c++11 c++14 INCLUDEPATH += . .. $$PWD/../include -- cgit v1.2.3