aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>2019-09-29 10:25:14 -0700
committerCurtis J Bezault <curtbezault@gmail.com>2019-09-29 10:25:14 -0700
commita07cd2ecc416f9efd595ee7a14b54275061d79bf (patch)
tree0db4b2980fe1490a47b44b27199e6d4fae89a6c1
parente81eceefa78c8e71ed1bd070a345037ab2306ea4 (diff)
downloadvcpkg-a07cd2ecc416f9efd595ee7a14b54275061d79bf.tar.gz
vcpkg-a07cd2ecc416f9efd595ee7a14b54275061d79bf.zip
[angle] Update to the latest commit. (#7329)
* [angle] Update to the latest commit. * Fix build linux. * Update CMakeList.txt and linux patch. * update to latest * Disable OpenGL deprecation warnings * Update CMakeLists.txt * include objective c files * don't filter any files out of common (same as upstream autotools) * drop unit tests so we don't bring in gtest * add filter mode * add back filter except for android
-rw-r--r--ports/angle/001-fix-uwp.patch536
-rw-r--r--ports/angle/002-fix-linux.patch28
-rw-r--r--ports/angle/CMakeLists.txt43
-rw-r--r--ports/angle/CONTROL2
-rw-r--r--ports/angle/portfile.cmake9
5 files changed, 336 insertions, 282 deletions
diff --git a/ports/angle/001-fix-uwp.patch b/ports/angle/001-fix-uwp.patch
index 818282ee2..36c9aad34 100644
--- a/ports/angle/001-fix-uwp.patch
+++ b/ports/angle/001-fix-uwp.patch
@@ -1,274 +1,262 @@
-diff --git a/src/common/system_utils_win.cpp b/src/common/system_utils_win.cpp
-index e4c146091..974b1b3ba 100644
---- a/src/common/system_utils_win.cpp
-+++ b/src/common/system_utils_win.cpp
-@@ -110,7 +110,7 @@ class Win32Library : public Library
- int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
- if (ret > 0 && ret < MAX_PATH)
- {
-- mModule = LoadLibraryA(buffer);
-+ // mModule = LoadLibraryA(buffer);
- }
- }
-
-diff --git a/src/libANGLE/renderer/d3d/RendererD3D.cpp b/src/libANGLE/renderer/d3d/RendererD3D.cpp
-index 2a8d0221b..362c95a6f 100644
---- a/src/libANGLE/renderer/d3d/RendererD3D.cpp
-+++ b/src/libANGLE/renderer/d3d/RendererD3D.cpp
-@@ -229,7 +229,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 9da5cfdae..6eaab6aa7 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"
-@@ -1189,10 +1190,11 @@ void Renderer11::generateDisplayExtensions(egl::DisplayExtensions *outExtensions
- outExtensions->robustResourceInitialization = true;
-
- // 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)
-@@ -1266,16 +1268,24 @@ 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 cb2f279e4..a8761e29c 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;
-+ ComPtr<ABI::Windows::Graphics::Display::IDisplayInformation> displayProperties;
-
-- if (SUCCEEDED(GetActivationFactory(
-- HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(),
-- displayProperties.GetAddressOf())))
-+ 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 ae57cfb83..983a20ada 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 708e8a212..aa6c6f375 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 8972ca227..ed3576a8c 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;
-@@ -119,4 +122,44 @@ bool NativeWindow11WinRT::IsValidNativeWindow(EGLNativeWindowType window)
- 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 eac5b21b7..36b20371e 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
-@@ -34,11 +34,13 @@ 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 af0beb635..9f7face1b 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
-@@ -247,6 +247,7 @@ HRESULT SwapChainPanelNativeWindow::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 ||
-diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
-index 09642eec5..1f2c090d5 100644
---- a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
-+++ b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
-@@ -28,6 +28,7 @@ class SwapChainPanelNativeWindow : public InspectableNativeWindow,
- unsigned int width,
- unsigned int height,
- bool containsAlpha,
-+ unsigned int samples,
- IDXGISwapChain1 **swapChain) override;
-
- protected:
-@@ -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/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/ports/angle/002-fix-linux.patch b/ports/angle/002-fix-linux.patch
new file mode 100644
index 000000000..283d49448
--- /dev/null
+++ b/ports/angle/002-fix-linux.patch
@@ -0,0 +1,28 @@
+diff --git a/src/common/mathutil.h b/src/common/mathutil.h
+index bdf8c2a..d2aa5dd 100644
+--- a/src/common/mathutil.h
++++ b/src/common/mathutil.h
+@@ -21,6 +21,10 @@
+ #include "common/debug.h"
+ #include "common/platform.h"
+
++#if defined(__GNUC__)
++#include <x86intrin.h>
++#endif
++
+ namespace angle
+ {
+ using base::CheckedNumeric;
+@@ -1260,6 +1264,12 @@ inline constexpr unsigned int UnsignedCeilDivide(unsigned int value, unsigned in
+ # define ANGLE_ROTL64(x, y) _rotl64(x, y)
+ # define ANGLE_ROTR16(x, y) _rotr16(x, y)
+
++#elif defined(__GNUC__)
++
++# define ANGLE_ROTL(x, y) __rold(x, y)
++# define ANGLE_ROTL64(x, y) __rolq(x, y)
++# define ANGLE_ROTR16(x, y) __rolw(x, y)
++
+ #elif defined(__clang__) && __has_builtin(__builtin_rotateleft32) && \
+ __has_builtin(__builtin_rotateleft64) && __has_builtin(__builtin_rotateright16)
+
diff --git a/ports/angle/CMakeLists.txt b/ports/angle/CMakeLists.txt
index 7d791db84..8be51c0d4 100644
--- a/ports/angle/CMakeLists.txt
+++ b/ports/angle/CMakeLists.txt
@@ -30,6 +30,7 @@ set(CMAKE_STATIC_LIBRARY_PREFIX "")
add_definitions(
-D_CRT_SECURE_NO_DEPRECATE
-D_SCL_SECURE_NO_WARNINGS
+ -DGL_SILENCE_DEPRECATION
-D_HAS_EXCEPTIONS=0
-DNOMINMAX
-DANGLE_STANDALONE_BUILD
@@ -42,11 +43,11 @@ include_directories(include src ${CMAKE_CURRENT_BINARY_DIR}/include)
##########
# angle::common
if(WIN32)
- set(ANGLE_COMMON_PLATFORM_FILTER "_linux|_mac|_posix|android_")
+ set(ANGLE_COMMON_PLATFORM_FILTER "_linux|_mac|_posix")
elseif(LINUX)
- set(ANGLE_COMMON_PLATFORM_FILTER "_win|_mac|android_")
+ set(ANGLE_COMMON_PLATFORM_FILTER "_win|_mac")
elseif(APPLE)
- set(ANGLE_COMMON_PLATFORM_FILTER "_linux|_win|android_")
+ set(ANGLE_COMMON_PLATFORM_FILTER "_linux|_win")
endif()
file(GLOB ANGLE_COMMON_SOURCES
"src/common/*.h"
@@ -222,8 +223,12 @@ if(WIN32)
set(LIBANGLE_SOURCES_PLATFORM
"src/third_party/systeminfo/SystemInfo.cpp"
)
+elseif(APPLE)
+ file(GLOB LIBANGLE_SOURCES_PLATFORM
+ "src/libANGLE/renderer/*.mm"
+ )
else()
- set(LIBANGLE_SOURCES_PLATFORM )
+ set(LIBANGLE_SOURCES_PLATFORM)
endif()
file(GLOB LIBANGLE_SOURCES
@@ -294,7 +299,35 @@ add_library(angle::libANGLE ALIAS libANGLE)
##########
# libGLESv2
-file(GLOB LIBGLESV2_SOURCES "src/libGLESv2/*.h" "src/libGLESv2/*.cpp" "src/libGLESv2/libGLESv2_autogen.def")
+# Modified according to the file src/libGLESv2.gni
+list(APPEND LIBGLESV2_SOURCES
+ "src/common/angleutils.h"
+ "src/common/debug.h"
+ "src/libANGLE/entry_points_enum_autogen.h"
+ "src/libANGLE/entry_points_utils.h"
+ "src/libGLESv2/entry_points_egl.cpp"
+ "src/libGLESv2/entry_points_egl.h"
+ "src/libGLESv2/entry_points_egl_ext.cpp"
+ "src/libGLESv2/entry_points_egl_ext.h"
+ "src/libGLESv2/entry_points_gles_1_0_autogen.cpp"
+ "src/libGLESv2/entry_points_gles_1_0_autogen.h"
+ "src/libGLESv2/entry_points_gles_2_0_autogen.cpp"
+ "src/libGLESv2/entry_points_gles_2_0_autogen.h"
+ "src/libGLESv2/entry_points_gles_3_0_autogen.cpp"
+ "src/libGLESv2/entry_points_gles_3_0_autogen.h"
+ "src/libGLESv2/entry_points_gles_3_1_autogen.cpp"
+ "src/libGLESv2/entry_points_gles_3_1_autogen.h"
+ "src/libGLESv2/entry_points_gles_ext_autogen.cpp"
+ "src/libGLESv2/entry_points_gles_ext_autogen.h"
+ "src/libGLESv2/global_state.cpp"
+ "src/libGLESv2/global_state.h"
+ "src/libGLESv2/libGLESv2_autogen.cpp"
+ "src/libGLESv2/libGLESv2.rc"
+ "src/libGLESv2/proc_table_egl.h"
+ "src/libGLESv2/proc_table_egl_autogen.cpp"
+ "src/libGLESv2/resource.h"
+ "src/libGLESv2/libGLESv2_autogen.def"
+)
add_library(libGLESv2 ${LIBGLESV2_SOURCES})
target_link_libraries(libGLESv2 PRIVATE angle::common angle::libANGLE)
target_compile_definitions(libGLESv2
diff --git a/ports/angle/CONTROL b/ports/angle/CONTROL
index faa26f276..5922d9db4 100644
--- a/ports/angle/CONTROL
+++ b/ports/angle/CONTROL
@@ -1,5 +1,5 @@
Source: angle
-Version: 2019-06-13
+Version: 2019-07-19-1
Homepage: https://github.com/google/angle
Description: A conformant OpenGL ES implementation for Windows, Mac and Linux.
The goal of ANGLE is to allow users of multiple operating systems to seamlessly run WebGL and other OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available for that platform. ANGLE currently provides translation from OpenGL ES 2.0 and 3.0 to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Support for translation from OpenGL ES to Vulkan is underway, and future plans include compute shader support (ES 3.1) and MacOS support.
diff --git a/ports/angle/portfile.cmake b/ports/angle/portfile.cmake
index 48a6f7a3c..f492ca006 100644
--- a/ports/angle/portfile.cmake
+++ b/ports/angle/portfile.cmake
@@ -2,6 +2,10 @@ include(vcpkg_common_functions)
vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+if (VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ message(WARNING "Building with a gcc version less than 6.1 is not supported.")
+endif()
+
if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(ANGLE_CPU_BITNESS ANGLE_IS_32_BIT_CPU)
elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
@@ -15,10 +19,11 @@ endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO google/angle
- REF 0d3cf7085c8e953e78d4fa0656b26ee93d005452
- SHA512 91550749933e278a72ae1094178ea28b36ee2b2fa553549477596ee772d1a39653386b3f3a9f168b0840a1511b7d31384b4e2d53cd5b5629028ca9c5a18a9288
+ REF 8f08fed925c54835c4faee4d7dd61d6ed2964ffd
+ SHA512 037ebe356371924088563180c4a37a31eaffa41ca21c42554391672c28e62fabc19d787516b88baa192b771e05c370c5a6cfec0863b70e08d65216f41d89923f
PATCHES
001-fix-uwp.patch
+ 002-fix-linux.patch
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})