aboutsummaryrefslogtreecommitdiff
path: root/ports/angle/001-fix-uwp.patch
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2020-02-04 15:50:10 -0800
committerRobert Schumacher <roschuma@microsoft.com>2020-02-04 15:50:10 -0800
commit6f66ad14fe9da11d4bf50f5b25b4da86ed971c53 (patch)
tree0f5dbcd1719cd6a8e486c4058cfefd607d58aa6c /ports/angle/001-fix-uwp.patch
parentd502f061bb3ee0258d6453acbf258b9e5d93d564 (diff)
parentd808514c9df44bb97d6eccff952bfe8ec4e156f7 (diff)
downloadvcpkg-6f66ad14fe9da11d4bf50f5b25b4da86ed971c53.tar.gz
vcpkg-6f66ad14fe9da11d4bf50f5b25b4da86ed971c53.zip
Merge remote-tracking branch 'origin/master' into HEAD
Diffstat (limited to 'ports/angle/001-fix-uwp.patch')
-rw-r--r--ports/angle/001-fix-uwp.patch339
1 files changed, 77 insertions, 262 deletions
diff --git a/ports/angle/001-fix-uwp.patch b/ports/angle/001-fix-uwp.patch
index 36c9aad34..badf1596d 100644
--- a/ports/angle/001-fix-uwp.patch
+++ b/ports/angle/001-fix-uwp.patch
@@ -1,262 +1,77 @@
-diff --git a/src/libANGLE/renderer/d3d/RendererD3D.cpp b/src/libANGLE/renderer/d3d/RendererD3D.cpp
-index fa46476..ad56164 100644
---- a/src/libANGLE/renderer/d3d/RendererD3D.cpp
-+++ b/src/libANGLE/renderer/d3d/RendererD3D.cpp
-@@ -240,7 +240,6 @@ GLenum DefaultGLErrorCode(HRESULT hr)
- {
- switch (hr)
- {
-- case D3DERR_OUTOFVIDEOMEMORY:
- case E_OUTOFMEMORY:
- return GL_OUT_OF_MEMORY;
- default:
-diff --git a/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-index 62f263b..b8efe15 100644
---- a/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-+++ b/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
-@@ -14,6 +14,7 @@
-
- #include "common/tls.h"
- #include "common/utilities.h"
-+#include "common/debug.h"
- #include "libANGLE/Buffer.h"
- #include "libANGLE/Context.h"
- #include "libANGLE/Display.h"
-@@ -1142,9 +1143,11 @@ void Renderer11::generateDisplayExtensions(egl::DisplayExtensions *outExtensions
-
- // Compositor Native Window capabilies require WinVer >= 1803
- if (CompositorNativeWindow11::IsSupportedWinRelease())
-- {
-- outExtensions->windowsUIComposition = true;
-- }
-+ #ifdef ANGLE_ENABLE_WINDOWS_STORE
-+ outExtensions->windowsUIComposition = NativeWindow11WinRT::IsSupportedWin10Release();
-+ #else
-+ outExtensions->windowsUIComposition = CompositorNativeWindow11::IsSupportedWinRelease();
-+ #endif
- }
-
- angle::Result Renderer11::flush(Context11 *context11)
-@@ -1218,16 +1221,23 @@ NativeWindowD3D *Renderer11::createNativeWindow(EGLNativeWindowType window,
- const egl::Config *config,
- const egl::AttributeMap &attribs) const
- {
-- auto useWinUiComp = window != nullptr && !NativeWindow11Win32::IsValidNativeWindow(window);
--
-+#ifdef ANGLE_ENABLE_WINDOWS_STORE
-+ auto useWinUiComp = window != nullptr && !NativeWindow11WinRT::IsValidNativeWindow(window);
-+#else
-+ auto useWinUiComp = window != nullptr && !NativeWindow11Win32::IsValidNativeWindow(window);
-+#endif
- if (useWinUiComp)
- {
-- return new CompositorNativeWindow11(window, config->alphaSize > 0);
-+#ifdef ANGLE_ENABLE_WINDOWS_STORE
-+ return new NativeWindow11WinRT(window, config->alphaSize > 0);
-+#else
-+ return new CompositorNativeWindow11(window, config->alphaSize > 0);
-+#endif
- }
- else
- {
- #ifdef ANGLE_ENABLE_WINDOWS_STORE
-- UNUSED_VARIABLE(attribs);
-+ ANGLE_UNUSED_VARIABLE(attribs);
- return new NativeWindow11WinRT(window, config->alphaSize > 0);
- #else
- return new NativeWindow11Win32(
-diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
-index cb2f279..d76905c 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
-@@ -145,6 +145,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device,
- unsigned int width,
- unsigned int height,
- bool containsAlpha,
-+ unsigned int samples,
- IDXGISwapChain1 **swapChain)
- {
- if (device == nullptr || factory == nullptr || swapChain == nullptr || width == 0 ||
-@@ -158,6 +159,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device,
- swapChainDesc.Height = height;
- swapChainDesc.Format = format;
- swapChainDesc.Stereo = FALSE;
-+ swapChainDesc.SampleDesc.Count = samples;
- swapChainDesc.SampleDesc.Count = 1;
- swapChainDesc.SampleDesc.Quality = 0;
- swapChainDesc.BufferUsage =
-@@ -213,11 +215,9 @@ HRESULT GetCoreWindowSizeInPixels(const ComPtr<ABI::Windows::UI::Core::ICoreWind
-
- static float GetLogicalDpi()
- {
-- ComPtr<ABI::Windows::Graphics::Display::IDisplayPropertiesStatics> displayProperties;
--
-- if (SUCCEEDED(GetActivationFactory(
-- HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(),
-- displayProperties.GetAddressOf())))
-+ ComPtr<ABI::Windows::Graphics::Display::IDisplayInformation> displayProperties;
-+ if (SUCCEEDED(GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayInformation).Get(),
-+ displayProperties.GetAddressOf())))
- {
- float dpi = 96.0f;
- if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi)))
-diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
-index ae57cfb..dd77b42 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
-@@ -36,6 +36,7 @@ class CoreWindowNativeWindow : public InspectableNativeWindow,
- unsigned int width,
- unsigned int height,
- bool containsAlpha,
-+ unsigned int samples,
- IDXGISwapChain1 **swapChain) override;
-
- protected:
-@@ -49,7 +50,7 @@ class CoreWindowNativeWindow : public InspectableNativeWindow,
- ComPtr<IMap<HSTRING, IInspectable *>> mPropertyMap;
- };
-
--[uuid(7F924F66 - EBAE - 40E5 - A10B - B8F35E245190)] class CoreWindowSizeChangedHandler
-+[uuid(7F924F66-EBAE-40E5-A10B-B8F35E245190)] class CoreWindowSizeChangedHandler
- : public Microsoft::WRL::RuntimeClass<
- Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
- IWindowSizeChangedEventHandler>
-diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h b/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
-index 708e8a2..9bfa4c4 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
-@@ -53,6 +53,7 @@ class InspectableNativeWindow
- unsigned int width,
- unsigned int height,
- bool containsAlpha,
-+ unsigned int samples,
- IDXGISwapChain1 **swapChain) = 0;
-
- bool getClientRect(RECT *rect)
-diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp b/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp
-index 8972ca2..caf2a7e 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp
-@@ -13,6 +13,8 @@
- #include "libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h"
- #include "libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h"
-
-+#include <windows.foundation.metadata.h>
-+
- using namespace Microsoft::WRL;
- using namespace Microsoft::WRL::Wrappers;
-
-@@ -88,6 +90,7 @@ HRESULT NativeWindow11WinRT::createSwapChain(ID3D11Device *device,
- DXGI_FORMAT format,
- UINT width,
- UINT height,
-+ UINT samples,
- IDXGISwapChain **swapChain)
- {
- if (mImpl)
-@@ -95,7 +98,7 @@ HRESULT NativeWindow11WinRT::createSwapChain(ID3D11Device *device,
- IDXGIFactory2 *factory2 = d3d11::DynamicCastComObject<IDXGIFactory2>(factory);
- IDXGISwapChain1 *swapChain1 = nullptr;
- HRESULT result =
-- mImpl->createSwapChain(device, factory2, format, width, height, mHasAlpha, &swapChain1);
-+ mImpl->createSwapChain(device, factory2, format, width, height, mHasAlpha, samples, &swapChain1);
- SafeRelease(factory2);
- *swapChain = static_cast<IDXGISwapChain *>(swapChain1);
- return result;
-@@ -118,5 +121,44 @@ bool NativeWindow11WinRT::IsValidNativeWindow(EGLNativeWindowType window)
- // Anything else will be rejected as an invalid IInspectable.
- return IsCoreWindow(window) || IsSwapChainPanel(window) || IsEGLConfiguredPropertySet(window);
- }
-+bool NativeWindow11WinRT::IsSupportedWin10Release()
-+{
-+ HSTRING className, contractName;
-+ HSTRING_HEADER classNameHeader, contractNameHeader;
-+ boolean isSupported = false;
-+
-+ const wchar_t *str = static_cast<const wchar_t *>(RuntimeClass_Windows_Foundation_Metadata_ApiInformation);
-+ unsigned int length;
-+ SizeTToUInt32(::wcslen(str), &length);
-+ HRESULT hr = WindowsCreateStringReference(RuntimeClass_Windows_Foundation_Metadata_ApiInformation, length, &classNameHeader, &className);
-+
-+ if (FAILED(hr))
-+ {
-+ return isSupported;
-+ }
-+
-+ Microsoft::WRL::ComPtr<ABI::Windows::Foundation::Metadata::IApiInformationStatics> api;
-+
-+ hr = RoGetActivationFactory(className, __uuidof(ABI::Windows::Foundation::Metadata::IApiInformationStatics), &api);
-+
-+ if (FAILED(hr))
-+ {
-+ return isSupported;
-+ }
-+
-+ str = static_cast<const wchar_t *>(L"Windows.Foundation.UniversalApiContract");
-+ SizeTToUInt32(::wcslen(str), &length);
-+ hr = WindowsCreateStringReference(L"Windows.Foundation.UniversalApiContract", length, &contractNameHeader,
-+ &contractName);
-+
-+ if (FAILED(hr))
-+ {
-+ return isSupported;
-+ }
-+
-+ api->IsApiContractPresentByMajor(contractName, 6, &isSupported);
-+
-+ return isSupported;
-+}
-
- } // namespace rx
-diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h b/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
-index eac5b21..b9ee344 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
-@@ -34,11 +34,14 @@ class NativeWindow11WinRT : public NativeWindow11
- DXGI_FORMAT format,
- UINT width,
- UINT height,
-+ UINT samples,
- IDXGISwapChain **swapChain) override;
-
- void commitChange() override;
-
- static bool IsValidNativeWindow(EGLNativeWindowType window);
-+ static bool IsSupportedWin10Release();
-+
-
- private:
- bool mHasAlpha;
-diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
-index af0beb6..20fd632 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
-@@ -246,6 +246,7 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device,
- DXGI_FORMAT format,
- unsigned int width,
- unsigned int height,
-+ unsigned int samples,
- bool containsAlpha,
- IDXGISwapChain1 **swapChain)
- {
-diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
-index 09642ee..fc69bf4 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
-@@ -27,6 +27,7 @@ class SwapChainPanelNativeWindow : public InspectableNativeWindow,
- DXGI_FORMAT format,
- unsigned int width,
- unsigned int height,
-+ unsigned int samples,
- bool containsAlpha,
- IDXGISwapChain1 **swapChain) override;
-
-@@ -43,7 +44,7 @@ class SwapChainPanelNativeWindow : public InspectableNativeWindow,
- ComPtr<IDXGISwapChain1> mSwapChain;
- };
-
--[uuid(8ACBD974 - 8187 - 4508 - AD80 - AEC77F93CF36)] class SwapChainPanelSizeChangedHandler
-+[uuid(8ACBD974-8187-4508-AD80-AEC77F93CF36)] class SwapChainPanelSizeChangedHandler
- : public Microsoft::WRL::RuntimeClass<
- Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
- ABI::Windows::UI::Xaml::ISizeChangedEventHandler>
+diff --git a/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp b/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
+index 0c9698450..3e37ad0ab 100644
+--- a/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
++++ b/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
+@@ -2364,6 +2364,11 @@ void InitializeFeatures(const Renderer11DeviceCaps &deviceCaps,
+ bool isIvyBridge = false;
+ bool isAMD = IsAMD(adapterDesc.VendorId);
+ bool isFeatureLevel9_3 = (deviceCaps.featureLevel <= D3D_FEATURE_LEVEL_9_3);
++#if defined(ANGLE_ENABLE_WINDOWS_UWP)
++ bool isWin10 = true;
++#else
++ bool isWin10 = IsWindows10OrGreater();
++#endif
+ IntelDriverVersion capsVersion = IntelDriverVersion(0);
+ if (isIntel)
+ {
+@@ -2448,7 +2453,7 @@ void InitializeFeatures(const Renderer11DeviceCaps &deviceCaps,
+ // Don't translate uniform block to StructuredBuffer on Windows 7 and earlier. This is targeted
+ // to work around a bug that fails to allocate ShaderResourceView for StructuredBuffer.
+ ANGLE_FEATURE_CONDITION(features, dontTranslateUniformBlockToStructuredBuffer,
+- !IsWindows10OrGreater());
++ !isWin10);
+
+ // Call platform hooks for testing overrides.
+ auto *platform = ANGLEPlatformCurrent();
+diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
+index 7d3f078d6..fac057dd6 100644
+--- a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
++++ b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
+@@ -213,16 +213,20 @@ HRESULT GetCoreWindowSizeInPixels(const ComPtr<ABI::Windows::UI::Core::ICoreWind
+
+ static float GetLogicalDpi()
+ {
+- ComPtr<ABI::Windows::Graphics::Display::IDisplayPropertiesStatics> displayProperties;
++ ComPtr<ABI::Windows::Graphics::Display::IDisplayInformationStatics> displayInformationStatics;
++ ComPtr<ABI::Windows::Graphics::Display::IDisplayInformation> displayInformation;
+
+ if (SUCCEEDED(GetActivationFactory(
+- HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(),
+- displayProperties.GetAddressOf())))
++ HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayInformation).Get(),
++ displayInformationStatics.GetAddressOf())))
+ {
+ float dpi = 96.0f;
+- if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi)))
++ if (SUCCEEDED(displayInformationStatics->GetForCurrentView(&displayInformation)))
+ {
+- return dpi;
++ if (SUCCEEDED(displayInformation->get_LogicalDpi(&dpi)))
++ {
++ return dpi;
++ }
+ }
+ }
+
+diff --git a/src/libGLESv2/global_state.cpp b/src/libGLESv2/global_state.cpp
+index 8c2c61f53..7725106a4 100644
+--- a/src/libGLESv2/global_state.cpp
++++ b/src/libGLESv2/global_state.cpp
+@@ -214,7 +214,7 @@ namespace
+ {
+ // The following WaitForDebugger code is based on SwiftShader. See:
+ // https://cs.chromium.org/chromium/src/third_party/swiftshader/src/Vulkan/main.cpp
+-# if defined(ANGLE_ENABLE_ASSERTS)
++# if defined(ANGLE_ENABLE_ASSERTS) && !defined(ANGLE_ENABLE_WINDOWS_UWP)
+ INT_PTR CALLBACK DebuggerWaitDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+ {
+ RECT rect;
+@@ -259,7 +259,7 @@ void WaitForDebugger(HINSTANCE instance)
+ }
+ # else
+ void WaitForDebugger(HINSTANCE instance) {}
+-# endif // defined(ANGLE_ENABLE_ASSERTS)
++# endif // defined(ANGLE_ENABLE_ASSERTS) && !defined(ANGLE_ENABLE_WINDOWS_UWP)
+ } // namespace
+
+ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID)