From e12ba07322cd61c5cf50c25ed8d1f08f6b1ff879 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Thu, 24 Mar 2016 12:38:18 +0100 Subject: Update ANGLE to chromium/2651 Change-Id: I1cd32b780b1a0b913fab870e155ae1f4f9ac40d7 Reviewed-by: Maurice Kalinowski --- .../0002-ANGLE-Fix-compilation-with-MinGW.patch | 1087 ++++++++++---------- 1 file changed, 529 insertions(+), 558 deletions(-) (limited to 'src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch') diff --git a/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch b/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch index e28bc797e3..59ea6e182d 100644 --- a/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch +++ b/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch @@ -1,7 +1,7 @@ -From 6f98a957829fd37106fb1f1c9f43a5bad626cdfc Mon Sep 17 00:00:00 2001 -From: Andrew Knight -Date: Wed, 25 Mar 2015 20:21:33 +0200 -Subject: [PATCH 2/5] ANGLE: Fix compilation with MinGW +From c6b9e598384563a641efdff56fdbdb0d7a561ec4 Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Thu, 10 Mar 2016 15:12:58 +0100 +Subject: [PATCH] ANGLE: Fix compilation with MinGW This adds definition guards for Direct3D 11 and DirectX SDK layers, which are only available in very recent versions (4.9.2 rev 4) of MinGW builds. @@ -9,43 +9,27 @@ It additionally adds a few missing includes needed for compilation. Change-Id: I254c208209c0071fae5efb6727f2b3cfd5542da6 --- - src/3rdparty/angle/src/common/mathutil.h | 4 + - src/3rdparty/angle/src/common/platform.h | 10 +- - src/3rdparty/angle/src/libANGLE/angletypes.h | 1 + - .../src/libANGLE/renderer/d3d/HLSLCompiler.cpp | 9 ++ - .../src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp | 6 + - .../src/libANGLE/renderer/d3d/d3d11/Clear11.cpp | 4 + - .../renderer/d3d/d3d11/DebugAnnotator11.cpp | 10 ++ - .../libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h | 2 + - .../src/libANGLE/renderer/d3d/d3d11/Query11.cpp | 7 + - .../src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 83 +++++++++-- - .../src/libANGLE/renderer/d3d/d3d11/Renderer11.h | 3 +- - .../renderer/d3d/d3d11/renderer11_utils.cpp | 152 +++++++++++++++++++++ - .../src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp | 4 +- - 13 files changed, 283 insertions(+), 12 deletions(-) + src/3rdparty/angle/src/common/platform.h | 10 ++- + .../src/libANGLE/renderer/d3d/HLSLCompiler.cpp | 9 +++ + .../src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp | 6 ++ + .../src/libANGLE/renderer/d3d/d3d11/Clear11.cpp | 4 + + .../renderer/d3d/d3d11/DebugAnnotator11.cpp | 10 +++ + .../libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h | 2 + + .../libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp | 2 + + .../src/libANGLE/renderer/d3d/d3d11/Query11.cpp | 12 +++ + .../src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 32 +++++++- + .../src/libANGLE/renderer/d3d/d3d11/Renderer11.h | 4 + + .../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 10 +++ + .../src/libANGLE/renderer/d3d/d3d11/SwapChain11.h | 2 + + .../renderer/d3d/d3d11/renderer11_utils.cpp | 92 ++++++++++++++++++++++ + .../renderer/d3d/d3d11/win32/NativeWindow.cpp | 8 ++ + .../src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp | 4 +- + src/3rdparty/angle/src/libEGL/libEGL_mingw32.def | 27 ++++--- + src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def | 19 +++++ + .../angle/src/libGLESv2/libGLESv2_mingw32.def | 32 +++++++- + .../angle/src/libGLESv2/libGLESv2d_mingw32.def | 32 +++++++- + 19 files changed, 296 insertions(+), 21 deletions(-) -diff --git a/src/3rdparty/angle/src/common/mathutil.h b/src/3rdparty/angle/src/common/mathutil.h -index e096b1a..1015bd2 100644 ---- a/src/3rdparty/angle/src/common/mathutil.h -+++ b/src/3rdparty/angle/src/common/mathutil.h -@@ -119,6 +119,9 @@ inline bool supportsSSE2() - return supports; - } - -+#if defined(__GNUC__) -+ supports = __builtin_cpu_supports("sse2"); -+#else - int info[4]; - __cpuid(info, 0); - -@@ -128,6 +131,7 @@ inline bool supportsSSE2() - - supports = (info[3] >> 26) & 1; - } -+#endif - - checked = true; - diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h index 4e3851c..be4cb94 100644 --- a/src/3rdparty/angle/src/common/platform.h @@ -69,23 +53,11 @@ index 4e3851c..be4cb94 100644 # include # endif -diff --git a/src/3rdparty/angle/src/libANGLE/angletypes.h b/src/3rdparty/angle/src/libANGLE/angletypes.h -index a5f471d..e4e08b5 100644 ---- a/src/3rdparty/angle/src/libANGLE/angletypes.h -+++ b/src/3rdparty/angle/src/libANGLE/angletypes.h -@@ -13,6 +13,7 @@ - #include "libANGLE/RefCountObject.h" - - #include -+#include - - namespace gl - { diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp -index d709dca..9c72d6f 100644 +index 0d298bb..df0257e 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp -@@ -22,6 +22,15 @@ namespace +@@ -25,6 +25,15 @@ namespace #define CREATE_COMPILER_FLAG_INFO(flag) { flag, #flag } @@ -102,12 +74,12 @@ index d709dca..9c72d6f 100644 { UINT mFlag; diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp -index 3b36c64..d56b0ea 100644 +index 66e2d67..0d5dc08 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp -@@ -12,6 +12,12 @@ - #include "libANGLE/renderer/d3d/d3d11/Renderer11.h" - #include "libANGLE/renderer/d3d/d3d11/formatutils11.h" +@@ -29,6 +29,12 @@ GLuint ReadIndexValueFromIndices(const uint8_t *data, size_t index) + typedef GLuint (*ReadIndexValueFunction)(const uint8_t *data, size_t index); + } +#if defined(ANGLE_MINGW32_COMPAT) +typedef enum D3D11_MAP_FLAG { @@ -117,44 +89,39 @@ index 3b36c64..d56b0ea 100644 + namespace rx { - + PackPixelsParams::PackPixelsParams() diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp -index ae373f5..057c3be 100644 +index 03b28c2..cd95c65 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp -@@ -133,12 +133,14 @@ Clear11::Clear11(Renderer11 *renderer) - mIntClearShader = CreateClearShader(device, DXGI_FORMAT_R32G32B32A32_SINT, g_VS_ClearSint, g_PS_ClearSint ); - } +@@ -262,7 +262,9 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl + RenderTarget11* maskedClearDepthStencil = nullptr; + ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext(); +#if defined(ANGLE_ENABLE_D3D11_1) - if (renderer->getDeviceContext1IfSupported()) - { - D3D11_FEATURE_DATA_D3D11_OPTIONS d3d11Options; - device->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS, &d3d11Options, sizeof(D3D11_FEATURE_DATA_D3D11_OPTIONS)); - mSupportsClearView = (d3d11Options.ClearView != FALSE); - } + ID3D11DeviceContext1 *deviceContext1 = mRenderer->getDeviceContext1IfSupported(); +#endif - } + ID3D11Device *device = mRenderer->getDevice(); - Clear11::~Clear11() -@@ -321,6 +323,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl + for (size_t colorAttachmentIndex = 0; colorAttachmentIndex < colorAttachments.size(); +@@ -347,6 +349,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl + clearValues[3] = (clearParams.colorFClearValue.alpha >= 0.5f) ? 1.0f : 0.0f; + } ++#if defined(ANGLE_ENABLE_D3D11_1) if (needScissoredClear) { -+#if defined(ANGLE_ENABLE_D3D11_1) // We shouldn't reach here if deviceContext1 is unavailable. - ASSERT(deviceContext1); - -@@ -331,6 +334,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl - rect.bottom = clearParams.scissor.y + clearParams.scissor.height; - +@@ -361,6 +364,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl deviceContext1->ClearView(framebufferRTV, clearValues, &rect, 1); -+#endif } else ++#endif { + deviceContext->ClearRenderTargetView(framebufferRTV, clearValues); + } diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp -index fcca904..f1fe2bb 100644 +index 2e42859..1c35ab4 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp @@ -27,7 +27,9 @@ DebugAnnotator11::~DebugAnnotator11() @@ -167,47 +134,49 @@ index fcca904..f1fe2bb 100644 #if !defined(ANGLE_ENABLE_WINDOWS_STORE) FreeLibrary(mD3d11Module); -@@ -39,21 +41,27 @@ void DebugAnnotator11::beginEvent(const std::wstring &eventName) - { - initializeDevice(); +@@ -41,7 +43,9 @@ void DebugAnnotator11::beginEvent(const wchar_t *eventName) + if (mUserDefinedAnnotation != nullptr) + { +#if defined(ANGLE_ENABLE_D3D11_1) - mUserDefinedAnnotation->BeginEvent(eventName.c_str()); + mUserDefinedAnnotation->BeginEvent(eventName); +#endif + } } - void DebugAnnotator11::endEvent() - { - initializeDevice(); +@@ -51,7 +55,9 @@ void DebugAnnotator11::endEvent() + if (mUserDefinedAnnotation != nullptr) + { +#if defined(ANGLE_ENABLE_D3D11_1) - mUserDefinedAnnotation->EndEvent(); + mUserDefinedAnnotation->EndEvent(); +#endif + } } - void DebugAnnotator11::setMarker(const std::wstring &markerName) - { - initializeDevice(); +@@ -61,7 +67,9 @@ void DebugAnnotator11::setMarker(const wchar_t *markerName) + if (mUserDefinedAnnotation != nullptr) + { +#if defined(ANGLE_ENABLE_D3D11_1) - mUserDefinedAnnotation->SetMarker(markerName.c_str()); + mUserDefinedAnnotation->SetMarker(markerName); +#endif + } } - bool DebugAnnotator11::getStatus() -@@ -96,8 +104,10 @@ void DebugAnnotator11::initializeDevice() - hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_NULL, nullptr, 0, nullptr, 0, D3D11_SDK_VERSION, &device, nullptr, &context); +@@ -137,8 +145,10 @@ void DebugAnnotator11::initializeDevice() ASSERT(SUCCEEDED(hr)); - + if (SUCCEEDED(hr)) + { +#if defined(ANGLE_ENABLE_D3D11_1) - mUserDefinedAnnotation = d3d11::DynamicCastComObject(context); - ASSERT(mUserDefinedAnnotation != nullptr); + mUserDefinedAnnotation = d3d11::DynamicCastComObject(context); + ASSERT(mUserDefinedAnnotation != nullptr); +#endif + mInitialized = true; + } - SafeRelease(device); - SafeRelease(context); diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h -index 0638364..3df62b0 100644 +index 9da4fa2..d1a0f7f 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h @@ -11,6 +11,8 @@ @@ -219,11 +188,31 @@ index 0638364..3df62b0 100644 namespace rx { +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp +index beffa30..186a035 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp +@@ -140,6 +140,7 @@ gl::Error Framebuffer11::discard(size_t count, const GLenum *attachments) + + gl::Error Framebuffer11::invalidateBase(size_t count, const GLenum *attachments, bool useEXTBehavior) const + { ++#if defined(ANGLE_ENABLE_D3D11_1) + ID3D11DeviceContext1 *deviceContext1 = mRenderer->getDeviceContext1IfSupported(); + + if (!deviceContext1) +@@ -272,6 +273,7 @@ gl::Error Framebuffer11::invalidateBase(size_t count, const GLenum *attachments, + deviceContext1->DiscardView(stencilView); + } + } ++#endif // ANGLE_ENABLE_D3D11_1 + + return gl::Error(GL_NO_ERROR); + } diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp -index e010190..4979ff5 100644 +index c015ff4..c0bed2b 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp -@@ -13,6 +13,13 @@ +@@ -13,6 +13,18 @@ #include @@ -232,187 +221,168 @@ index e010190..4979ff5 100644 + UINT64 NumPrimitivesWritten; + UINT64 PrimitivesStorageNeeded; +} D3D11_QUERY_DATA_SO_STATISTICS; ++ ++typedef struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT { ++ UINT64 Frequency; ++ BOOL Disjoint; ++} D3D11_QUERY_DATA_TIMESTAMP_DISJOINT; +#endif + namespace rx { diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp -index dbed23f..5291a3a 100644 +index ea84783..62badcc 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp -@@ -62,6 +62,67 @@ - #define ANGLE_SUPPRESS_D3D11_HAZARD_WARNINGS 1 +@@ -10,7 +10,7 @@ + + #include + #include +-#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP ++#if !defined(ANGLE_MINGW32_COMPAT) && WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP + #include #endif -+#ifndef __d3d11sdklayers_h__ -+#define D3D11_MESSAGE_CATEGORY UINT -+#define D3D11_MESSAGE_SEVERITY UINT -+#define D3D11_MESSAGE_ID UINT -+struct D3D11_MESSAGE; -+typedef struct D3D11_INFO_QUEUE_FILTER_DESC -+{ -+ UINT NumCategories; -+ D3D11_MESSAGE_CATEGORY *pCategoryList; -+ UINT NumSeverities; -+ D3D11_MESSAGE_SEVERITY *pSeverityList; -+ UINT NumIDs; -+ D3D11_MESSAGE_ID *pIDList; -+} D3D11_INFO_QUEUE_FILTER_DESC; -+typedef struct D3D11_INFO_QUEUE_FILTER -+{ -+ D3D11_INFO_QUEUE_FILTER_DESC AllowList; -+ D3D11_INFO_QUEUE_FILTER_DESC DenyList; -+} D3D11_INFO_QUEUE_FILTER; -+static const IID IID_ID3D11InfoQueue = { 0x6543dbb6, 0x1b48, 0x42f5, 0xab, 0x82, 0xe9, 0x7e, 0xc7, 0x43, 0x26, 0xf6 }; -+MIDL_INTERFACE("6543dbb6-1b48-42f5-ab82-e97ec74326f6") ID3D11InfoQueue : public IUnknown -+{ -+public: -+ virtual HRESULT __stdcall SetMessageCountLimit(UINT64) = 0; -+ virtual void __stdcall ClearStoredMessages() = 0; -+ virtual HRESULT __stdcall GetMessage(UINT64, D3D11_MESSAGE *, SIZE_T *) = 0; -+ virtual UINT64 __stdcall GetNumMessagesAllowedByStorageFilter() = 0; -+ virtual UINT64 __stdcall GetNumMessagesDeniedByStorageFilter() = 0; -+ virtual UINT64 __stdcall GetNumStoredMessages() = 0; -+ virtual UINT64 __stdcall GetNumStoredMessagesAllowedByRetrievalFilter() = 0; -+ virtual UINT64 __stdcall GetNumMessagesDiscardedByMessageCountLimit() = 0; -+ virtual UINT64 __stdcall GetMessageCountLimit() = 0; -+ virtual HRESULT __stdcall AddStorageFilterEntries(D3D11_INFO_QUEUE_FILTER *) = 0; -+ virtual HRESULT __stdcall GetStorageFilter(D3D11_INFO_QUEUE_FILTER *, SIZE_T *) = 0; -+ virtual void __stdcall ClearStorageFilter() = 0; -+ virtual HRESULT __stdcall PushEmptyStorageFilter() = 0; -+ virtual HRESULT __stdcall PushCopyOfStorageFilter() = 0; -+ virtual HRESULT __stdcall PushStorageFilter(D3D11_INFO_QUEUE_FILTER *) = 0; -+ virtual void __stdcall PopStorageFilter() = 0; -+ virtual UINT __stdcall GetStorageFilterStackSize() = 0; -+ virtual HRESULT __stdcall AddRetrievalFilterEntries(D3D11_INFO_QUEUE_FILTER *) = 0; -+ virtual HRESULT __stdcall GetRetrievalFilter(D3D11_INFO_QUEUE_FILTER *, SIZE_T *) = 0; -+ virtual void __stdcall ClearRetrievalFilter() = 0; -+ virtual HRESULT __stdcall PushEmptyRetrievalFilter() = 0; -+ virtual HRESULT __stdcall PushCopyOfRetrievalFilter() = 0; -+ virtual HRESULT __stdcall PushRetrievalFilter(D3D11_INFO_QUEUE_FILTER *) = 0; -+ virtual void __stdcall PopRetrievalFilter() = 0; -+ virtual UINT __stdcall GetRetrievalFilterStackSize() = 0; -+ virtual HRESULT __stdcall AddMessage(D3D11_MESSAGE_CATEGORY, D3D11_MESSAGE_SEVERITY, D3D11_MESSAGE_ID, LPCSTR) = 0; -+ virtual HRESULT __stdcall AddApplicationMessage(D3D11_MESSAGE_SEVERITY, LPCSTR) = 0; -+ virtual HRESULT __stdcall SetBreakOnCategory(D3D11_MESSAGE_CATEGORY, BOOL) = 0; -+ virtual HRESULT __stdcall SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY, BOOL) = 0; -+ virtual HRESULT __stdcall SetBreakOnID(D3D11_MESSAGE_ID, BOOL) = 0; -+ virtual BOOL __stdcall GetBreakOnCategory(D3D11_MESSAGE_CATEGORY) = 0; -+ virtual BOOL __stdcall GetBreakOnSeverity(D3D11_MESSAGE_SEVERITY) = 0; -+ virtual BOOL __stdcall GetBreakOnID(D3D11_MESSAGE_ID) = 0; -+ virtual void __stdcall SetMuteDebugOutput(BOOL) = 0; -+ virtual BOOL __stdcall GetMuteDebugOutput() = 0; -+}; -+#endif -+ - namespace rx - { +@@ -89,6 +89,7 @@ enum + MAX_TEXTURE_IMAGE_UNITS_VTF_SM4 = 16 + }; -@@ -164,8 +225,7 @@ void CalculateConstantBufferParams(GLintptr offset, GLsizeiptr size, UINT *outFi ++#if defined(ANGLE_ENABLE_D3D11_1) + void CalculateConstantBufferParams(GLintptr offset, GLsizeiptr size, UINT *outFirstConstant, UINT *outNumConstants) + { + // The offset must be aligned to 256 bytes (should have been enforced by glBindBufferRange). +@@ -105,6 +106,7 @@ void CalculateConstantBufferParams(GLintptr offset, GLsizeiptr size, UINT *outFi + // This behaviour is explictly allowed according to the documentation on ID3D11DeviceContext1::PSSetConstantBuffers1 + // https://msdn.microsoft.com/en-us/library/windows/desktop/hh404649%28v=vs.85%29.aspx + } ++#endif - Renderer11::Renderer11(egl::Display *display) + enum ANGLEFeatureLevel + { +@@ -369,8 +371,10 @@ Renderer11::Renderer11(egl::Display *display) : RendererD3D(display), -- mStateCache(this), + mStateCache(this), + mStateManager(this), +- mLastHistogramUpdateTime(ANGLEPlatformCurrent()->monotonicallyIncreasingTime()), - mDebug(nullptr) -+ mStateCache(this) ++ mLastHistogramUpdateTime(ANGLEPlatformCurrent()->monotonicallyIncreasingTime()) ++#if !defined(ANGLE_MINGW32_COMPAT) ++ ,mDebug(nullptr) ++#endif { - // Initialize global annotator - gl::InitializeDebugAnnotations(&mAnnotator); -@@ -398,7 +458,9 @@ egl::Error Renderer11::initialize() - // Cast the DeviceContext to a DeviceContext1. - // This could fail on Windows 7 without the Platform Update. - // Don't error in this case- just don't use mDeviceContext1. + mVertexDataManager = NULL; + mIndexDataManager = NULL; +@@ -572,7 +576,9 @@ egl::Error Renderer11::initialize() + // Cast the DeviceContext to a DeviceContext1. + // This could fail on Windows 7 without the Platform Update. + // Don't error in this case- just don't use mDeviceContext1. +#if defined(ANGLE_ENABLE_D3D11_1) - mDeviceContext1 = d3d11::DynamicCastComObject(mDeviceContext); + mDeviceContext1 = d3d11::DynamicCastComObject(mDeviceContext); +#endif - IDXGIDevice *dxgiDevice = NULL; - result = mDevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice); -@@ -421,6 +483,7 @@ egl::Error Renderer11::initialize() + IDXGIDevice *dxgiDevice = NULL; + result = mDevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice); +@@ -595,6 +601,7 @@ egl::Error Renderer11::initialize() - SafeRelease(dxgiDevice); + SafeRelease(dxgiDevice); +#if defined(ANGLE_ENABLE_D3D11_1) - IDXGIAdapter2 *dxgiAdapter2 = d3d11::DynamicCastComObject(mDxgiAdapter); + IDXGIAdapter2 *dxgiAdapter2 = d3d11::DynamicCastComObject(mDxgiAdapter); - // On D3D_FEATURE_LEVEL_9_*, IDXGIAdapter::GetDesc returns "Software Adapter" for the description string. -@@ -447,6 +510,7 @@ egl::Error Renderer11::initialize() - } + // On D3D_FEATURE_LEVEL_9_*, IDXGIAdapter::GetDesc returns "Software Adapter" for the description string. +@@ -618,11 +625,14 @@ egl::Error Renderer11::initialize() + } + } + else ++#endif + { + result = mDxgiAdapter->GetDesc(&mAdapterDescription); + } - SafeRelease(dxgiAdapter2); ++#if defined(ANGLE_ENABLE_D3D11_1) + SafeRelease(dxgiAdapter2); +#endif - memset(mDescription, 0, sizeof(mDescription)); - wcstombs(mDescription, mAdapterDescription.Description, sizeof(mDescription) - 1); -@@ -463,7 +527,7 @@ egl::Error Renderer11::initialize() + if (FAILED(result)) + { +@@ -644,6 +654,7 @@ egl::Error Renderer11::initialize() + } + } + ++#if !defined(ANGLE_MINGW32_COMPAT) // Disable some spurious D3D11 debug warnings to prevent them from flooding the output log #if defined(ANGLE_SUPPRESS_D3D11_HAZARD_WARNINGS) && defined(_DEBUG) - ID3D11InfoQueue *infoQueue; -- result = mDevice->QueryInterface(__uuidof(ID3D11InfoQueue), (void **)&infoQueue); -+ result = mDevice->QueryInterface(IID_ID3D11InfoQueue, (void **)&infoQueue); - - if (SUCCEEDED(result)) { -@@ -481,10 +545,6 @@ egl::Error Renderer11::initialize() - } +@@ -671,6 +682,7 @@ egl::Error Renderer11::initialize() + #if !defined(NDEBUG) + mDebug = d3d11::DynamicCastComObject(mDevice); #endif ++#endif // !ANGLE_MINGW32_COMPAT --#if !defined(NDEBUG) -- mDebug = d3d11::DynamicCastComObject(mDevice); --#endif -- initializeDevice(); - return egl::Error(EGL_SUCCESS); -@@ -525,12 +585,14 @@ void Renderer11::initializeDevice() - - const gl::Caps &rendererCaps = getRendererCaps(); +@@ -859,6 +871,7 @@ void Renderer11::populateRenderer11DeviceCaps() + { + HRESULT hr = S_OK; +#if defined(ANGLE_ENABLE_D3D11_1) - if (getDeviceContext1IfSupported()) + if (mDeviceContext1) { D3D11_FEATURE_DATA_D3D11_OPTIONS d3d11Options; - mDevice->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS, &d3d11Options, sizeof(D3D11_FEATURE_DATA_D3D11_OPTIONS)); - mSupportsConstantBufferOffsets = (d3d11Options.ConstantBufferOffsetting != FALSE); +@@ -869,6 +882,7 @@ void Renderer11::populateRenderer11DeviceCaps() + mRenderer11DeviceCaps.supportsConstantBufferOffsets = (d3d11Options.ConstantBufferOffsetting != FALSE); + } } +#endif - mForceSetVertexSamplerStates.resize(rendererCaps.maxVertexTextureImageUnits); - mCurVertexSamplerStates.resize(rendererCaps.maxVertexTextureImageUnits); -@@ -853,6 +915,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, + hr = mDevice->CheckFormatSupport(DXGI_FORMAT_B5G6R5_UNORM, &(mRenderer11DeviceCaps.B5G6R5support)); + if (FAILED(hr)) +@@ -888,9 +902,11 @@ void Renderer11::populateRenderer11DeviceCaps() + mRenderer11DeviceCaps.B5G5R5A1support = 0; + } + ++#if defined(ANGLE_ENABLE_D3D11_1) + IDXGIAdapter2 *dxgiAdapter2 = d3d11::DynamicCastComObject(mDxgiAdapter); + mRenderer11DeviceCaps.supportsDXGI1_2 = (dxgiAdapter2 != nullptr); + SafeRelease(dxgiAdapter2); ++#endif + } + + egl::ConfigSet Renderer11::generateConfigs() const +@@ -1308,6 +1324,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, mCurrentConstantBufferVSOffset[uniformBufferIndex] != uniformBufferOffset || mCurrentConstantBufferVSSize[uniformBufferIndex] != uniformBufferSize) { +#if defined(ANGLE_ENABLE_D3D11_1) - if (mSupportsConstantBufferOffsets && uniformBufferSize != 0) + if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0) { UINT firstConstant = 0, numConstants = 0; -@@ -861,6 +924,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, - 1, &constantBuffer, &firstConstant, &numConstants); +@@ -1318,6 +1335,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, + 1, &constantBuffer, &firstConstant, &numConstants); } else +#endif { - ASSERT(uniformBufferOffset == 0); - mDeviceContext->VSSetConstantBuffers(getReservedVertexUniformBuffers() + uniformBufferIndex, -@@ -901,6 +965,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, + mDeviceContext->VSSetConstantBuffers( + getReservedVertexUniformBuffers() + +@@ -1369,6 +1387,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, mCurrentConstantBufferPSOffset[uniformBufferIndex] != uniformBufferOffset || mCurrentConstantBufferPSSize[uniformBufferIndex] != uniformBufferSize) { +#if defined(ANGLE_ENABLE_D3D11_1) - if (mSupportsConstantBufferOffsets && uniformBufferSize != 0) + if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0) { UINT firstConstant = 0, numConstants = 0; -@@ -909,6 +974,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, - 1, &constantBuffer, &firstConstant, &numConstants); +@@ -1379,6 +1398,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data, + 1, &constantBuffer, &firstConstant, &numConstants); } else +#endif { - ASSERT(uniformBufferOffset == 0); - mDeviceContext->PSSetConstantBuffers(getReservedFragmentUniformBuffers() + uniformBufferIndex, -@@ -2194,7 +2260,9 @@ void Renderer11::release() + mDeviceContext->PSSetConstantBuffers( + getReservedFragmentUniformBuffers() + +@@ -2448,7 +2468,9 @@ void Renderer11::release() SafeRelease(mDxgiFactory); SafeRelease(mDxgiAdapter); @@ -422,42 +392,129 @@ index dbed23f..5291a3a 100644 if (mDeviceContext) { -@@ -2204,7 +2272,6 @@ void Renderer11::release() +@@ -2458,7 +2480,9 @@ void Renderer11::release() } SafeRelease(mDevice); -- SafeRelease(mDebug); ++#if !defined(ANGLE_MINGW32_COMPAT) + SafeRelease(mDebug); ++#endif if (mD3d11Module) { +@@ -2618,7 +2642,7 @@ bool Renderer11::getShareHandleSupport() const + + if (deviceType == d3d11::ANGLE_D3D11_DEVICE_TYPE_WARP) + { +-#ifndef ANGLE_ENABLE_WINDOWS_STORE ++#if !defined(ANGLE_ENABLE_WINDOWS_STORE) && !defined(__GNUC__) + if (!IsWindows8OrGreater()) + { + // WARP on Windows 7 doesn't support shared handles diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h -index d1fec55..cc7d6c2 100644 +index 62e9816..b4e7761 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h -@@ -20,6 +20,8 @@ - #include "libANGLE/renderer/d3d/d3d11/InputLayoutCache.h" - #include "libANGLE/renderer/d3d/d3d11/RenderStateCache.h" +@@ -28,6 +28,8 @@ class FramebufferAttachment; + struct ImageIndex; + } +struct ID3D11DeviceContext1; + - namespace gl + namespace rx { - class FramebufferAttachment; -@@ -390,7 +392,6 @@ class Renderer11 : public RendererD3D + +@@ -442,7 +444,9 @@ class Renderer11 : public RendererD3D DXGI_ADAPTER_DESC mAdapterDescription; char mDescription[128]; DXGIFactory *mDxgiFactory; -- ID3D11Debug *mDebug; ++#if !defined(ANGLE_MINGW32_COMPAT) + ID3D11Debug *mDebug; ++#endif - DebugAnnotator11 mAnnotator; - }; + std::vector 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 70b2b79..63085f4 100644 +index d1f3ea0..a1175db 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp -@@ -20,6 +20,88 @@ - - #include +@@ -23,6 +23,88 @@ + #include "libANGLE/renderer/d3d/FramebufferD3D.h" + #include "libANGLE/renderer/d3d/WorkaroundsD3D.h" +#ifndef D3D_FL9_1_DEFAULT_MAX_ANISOTROPY +# define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2 @@ -544,127 +601,7 @@ index 70b2b79..63085f4 100644 namespace rx { -@@ -232,7 +314,9 @@ GLint GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return 3; -@@ -298,7 +382,9 @@ static bool GetNPOTTextureSupport(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return true; -@@ -316,7 +402,9 @@ static float GetMaximumAnisotropy(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_MAX_MAXANISOTROPY; - - case D3D_FEATURE_LEVEL_10_1: -@@ -336,7 +424,9 @@ static bool GetOcclusionQuerySupport(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return true; -@@ -356,7 +446,9 @@ static bool GetEventQuerySupport(D3D_FEATURE_LEVEL featureLevel) - - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: -@@ -374,7 +466,9 @@ static bool GetInstancingSupport(D3D_FEATURE_LEVEL featureLevel) - - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return true; -@@ -397,7 +491,9 @@ static bool GetFramebufferMultisampleSupport(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return true; -@@ -414,7 +510,9 @@ static bool GetFramebufferBlitSupport(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return true; -@@ -437,7 +535,9 @@ static bool GetDerivativeInstructionSupport(D3D_FEATURE_LEVEL featureLevel) - - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: -@@ -453,7 +553,9 @@ static bool GetShaderTextureLODSupport(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return true; -@@ -472,7 +574,9 @@ static size_t GetMaximumSimultaneousRenderTargets(D3D_FEATURE_LEVEL featureLevel - - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; - - case D3D_FEATURE_LEVEL_10_1: -@@ -490,7 +594,9 @@ static size_t GetMaximum2DTextureSize(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION; - - case D3D_FEATURE_LEVEL_10_1: -@@ -508,7 +614,9 @@ static size_t GetMaximumCubeMapTextureSize(D3D_FEATURE_LEVEL featureLevel) +@@ -601,7 +683,9 @@ static size_t GetMaximumCubeMapTextureSize(D3D_FEATURE_LEVEL featureLevel) { switch (featureLevel) { @@ -674,7 +611,7 @@ index 70b2b79..63085f4 100644 case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURECUBE_DIMENSION; case D3D_FEATURE_LEVEL_10_1: -@@ -526,7 +634,9 @@ static size_t GetMaximum2DTextureArraySize(D3D_FEATURE_LEVEL featureLevel) +@@ -619,7 +703,9 @@ static size_t GetMaximum2DTextureArraySize(D3D_FEATURE_LEVEL featureLevel) { switch (featureLevel) { @@ -684,244 +621,278 @@ index 70b2b79..63085f4 100644 case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION; case D3D_FEATURE_LEVEL_10_1: -@@ -544,7 +654,9 @@ static size_t GetMaximum3DTextureSize(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION; - - case D3D_FEATURE_LEVEL_10_1: -@@ -562,7 +674,9 @@ static size_t GetMaximumViewportSize(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_VIEWPORT_BOUNDS_MAX; - - case D3D_FEATURE_LEVEL_10_1: -@@ -586,7 +700,9 @@ static size_t GetMaximumDrawIndexedIndexCount(D3D_FEATURE_LEVEL featureLevel) +@@ -1266,7 +1352,9 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device) - switch (featureLevel) - { + IDXGIDevice *dxgiDevice = nullptr; + IDXGIAdapter *dxgiAdapter = nullptr; +#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: + IDXGIAdapter2 *dxgiAdapter2 = nullptr; +#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return std::numeric_limits::max(); -@@ -608,7 +724,9 @@ static size_t GetMaximumDrawVertexCount(D3D_FEATURE_LEVEL featureLevel) - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return std::numeric_limits::max(); -@@ -625,7 +743,9 @@ static size_t GetMaximumVertexInputSlots(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_STANDARD_VERTEX_ELEMENT_COUNT; + ANGLED3D11DeviceType retDeviceType = ANGLE_D3D11_DEVICE_TYPE_UNKNOWN; - case D3D_FEATURE_LEVEL_10_1: return D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT; -@@ -645,7 +765,9 @@ static size_t GetMaximumVertexUniformVectors(D3D_FEATURE_LEVEL featureLevel) - // TODO(geofflang): Remove hard-coded limit once the gl-uniform-arrays test can pass - switch (featureLevel) - { +@@ -1277,6 +1365,7 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device) + if (SUCCEEDED(hr)) + { + std::wstring adapterString; +#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return 1024; // D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT; - - case D3D_FEATURE_LEVEL_10_1: -@@ -670,7 +792,9 @@ static size_t GetMaximumVertexUniformBlocks(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - GetReservedVertexUniformBuffers(); - - case D3D_FEATURE_LEVEL_10_1: -@@ -698,7 +822,9 @@ static size_t GetReservedVertexOutputVectors(D3D_FEATURE_LEVEL featureLevel) - // We must reserve one output vector for dx_Position. - // We also reserve one for gl_Position, which we unconditionally output on Feature Levels 10_0+, - // even if it's unused in the shader (e.g. for transform feedback). TODO: This could be improved. -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return 2; -@@ -720,7 +846,9 @@ static size_t GetMaximumVertexOutputVectors(D3D_FEATURE_LEVEL featureLevel) - - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: + HRESULT adapter2hr = + dxgiAdapter->QueryInterface(__uuidof(dxgiAdapter2), (void **)&dxgiAdapter2); + if (SUCCEEDED(adapter2hr)) +@@ -1289,6 +1378,7 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device) + adapterString = std::wstring(adapterDesc2.Description); + } + else +#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_VS_OUTPUT_REGISTER_COUNT - GetReservedVertexOutputVectors(featureLevel); - - case D3D_FEATURE_LEVEL_10_1: return D3D10_1_VS_OUTPUT_REGISTER_COUNT - GetReservedVertexOutputVectors(featureLevel); -@@ -739,7 +867,9 @@ static size_t GetMaximumVertexTextureUnits(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT; + { + DXGI_ADAPTER_DESC adapterDesc; + dxgiAdapter->GetDesc(&adapterDesc); +@@ -1320,7 +1410,9 @@ ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device) - case D3D_FEATURE_LEVEL_10_1: -@@ -761,7 +891,9 @@ static size_t GetMaximumPixelUniformVectors(D3D_FEATURE_LEVEL featureLevel) - // TODO(geofflang): Remove hard-coded limit once the gl-uniform-arrays test can pass - switch (featureLevel) - { + SafeRelease(dxgiDevice); + SafeRelease(dxgiAdapter); +#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: + SafeRelease(dxgiAdapter2); +#endif - case D3D_FEATURE_LEVEL_11_0: return 1024; // D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT; - case D3D_FEATURE_LEVEL_10_1: -@@ -786,7 +918,9 @@ static size_t GetMaximumPixelUniformBlocks(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - GetReservedPixelUniformBuffers(); + return retDeviceType; + } +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp +index 123b481..cd63789 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp +@@ -12,7 +12,9 @@ + #include "common/debug.h" - case D3D_FEATURE_LEVEL_10_1: -@@ -805,7 +939,9 @@ static size_t GetMaximumPixelInputVectors(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: + #include ++#if !defined(__MINGW32__) + #include +#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_PS_INPUT_REGISTER_COUNT - GetReservedVertexOutputVectors(featureLevel); - case D3D_FEATURE_LEVEL_10_1: -@@ -824,7 +960,9 @@ static size_t GetMaximumPixelTextureUnits(D3D_FEATURE_LEVEL featureLevel) + namespace rx { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT; +@@ -31,9 +33,11 @@ NativeWindow::NativeWindow(EGLNativeWindowType window, - case D3D_FEATURE_LEVEL_10_1: -@@ -843,7 +981,9 @@ static int GetMinimumTexelOffset(D3D_FEATURE_LEVEL featureLevel) + NativeWindow::~NativeWindow() { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE; - - case D3D_FEATURE_LEVEL_10_1: -@@ -862,7 +1002,9 @@ static int GetMaximumTexelOffset(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: ++#if !defined(__MINGW32__) + SafeRelease(mCompositionTarget); + SafeRelease(mDevice); + SafeRelease(mVisual); +#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE; - case D3D_FEATURE_LEVEL_10_1: - case D3D_FEATURE_LEVEL_10_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE; -@@ -885,7 +1027,9 @@ static size_t GetMaximumConstantBufferSize(D3D_FEATURE_LEVEL featureLevel) + } - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT * bytesPerComponent; + bool NativeWindow::initialize() +@@ -66,6 +70,7 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory + return E_INVALIDARG; + } - case D3D_FEATURE_LEVEL_10_1: -@@ -904,7 +1048,9 @@ static size_t GetMaximumStreamOutputBuffers(D3D_FEATURE_LEVEL featureLevel) - { - switch (featureLevel) ++#if !defined(__MINGW32__) + if (mDirectComposition) { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return D3D11_SO_BUFFER_SLOT_COUNT; + HMODULE dcomp = ::GetModuleHandle(TEXT("dcomp.dll")); +@@ -171,6 +176,7 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory + SafeRelease(factory2); + return result; + } ++#endif // !__MINGW32__ - case D3D_FEATURE_LEVEL_10_1: return D3D10_1_SO_BUFFER_SLOT_COUNT; -@@ -922,7 +1068,9 @@ static size_t GetMaximumStreamOutputInterleavedComponents(D3D_FEATURE_LEVEL feat - { - switch (featureLevel) - { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: + DXGI_SWAP_CHAIN_DESC swapChainDesc = {}; + swapChainDesc.BufferCount = 1; +@@ -202,9 +208,11 @@ HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory - case D3D_FEATURE_LEVEL_10_1: -@@ -940,7 +1088,9 @@ static size_t GetMaximumStreamOutputSeparateComponents(D3D_FEATURE_LEVEL feature + void NativeWindow::commitChange() { - switch (featureLevel) ++#if !defined(__MINGW32__) + if (mDevice) { -+#if defined(ANGLE_ENABLE_D3D11_1) - case D3D_FEATURE_LEVEL_11_1: -+#endif - case D3D_FEATURE_LEVEL_11_0: return GetMaximumStreamOutputInterleavedComponents(featureLevel) / - GetMaximumStreamOutputBuffers(featureLevel); - -@@ -1054,6 +1204,7 @@ void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, gl:: - - // Setting a large alignment forces uniform buffers to bind with zero offset - caps->uniformBufferOffsetAlignment = static_cast(std::numeric_limits::max()); -+#if defined(ANGLE_ENABLE_D3D11_1) - ID3D11DeviceContext1 *deviceContext1 = d3d11::DynamicCastComObject(deviceContext); - - if (deviceContext1) -@@ -1070,6 +1221,7 @@ void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, gl:: - - SafeRelease(deviceContext1); + mDevice->Commit(); } +#endif - - caps->maxCombinedUniformBlocks = caps->maxVertexUniformBlocks + caps->maxFragmentUniformBlocks; - caps->maxCombinedVertexUniformComponents = (static_cast(caps->maxVertexUniformBlocks) * static_cast(caps->maxUniformBlockSize / 4)) + + } + } diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp -index c59808d..bf1c367 100644 +index cba74c1..6bb975b 100644 --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp -@@ -206,7 +206,7 @@ egl::Error Renderer9::initialize() +@@ -193,7 +193,7 @@ egl::Error Renderer9::initialize() { - TRACE_EVENT0("gpu", "D3d9Ex_QueryInterface"); + TRACE_EVENT0("gpu.angle", "D3d9Ex_QueryInterface"); ASSERT(mD3d9Ex); - mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast(&mD3d9)); + mD3d9Ex->QueryInterface(IID_IDirect3D9, reinterpret_cast(&mD3d9)); ASSERT(mD3d9); } else -@@ -314,7 +314,7 @@ egl::Error Renderer9::initialize() +@@ -301,7 +301,7 @@ egl::Error Renderer9::initialize() if (mD3d9Ex) { - TRACE_EVENT0("gpu", "mDevice_QueryInterface"); + TRACE_EVENT0("gpu.angle", "mDevice_QueryInterface"); - result = mDevice->QueryInterface(__uuidof(IDirect3DDevice9Ex), (void**)&mDeviceEx); + result = mDevice->QueryInterface(IID_IDirect3DDevice9Ex, (void**)&mDeviceEx); ASSERT(SUCCEEDED(result)); } +diff --git a/src/3rdparty/angle/src/libEGL/libEGL_mingw32.def b/src/3rdparty/angle/src/libEGL/libEGL_mingw32.def +index 6a771a5..c8f941a 100644 +--- a/src/3rdparty/angle/src/libEGL/libEGL_mingw32.def ++++ b/src/3rdparty/angle/src/libEGL/libEGL_mingw32.def +@@ -39,15 +39,22 @@ EXPORTS + eglGetPlatformDisplayEXT@12 @35 + eglQuerySurfacePointerANGLE@16 @36 + eglPostSubBufferNV@24 @37 ++ eglQueryDisplayAttribEXT@12 @48 ++ eglQueryDeviceAttribEXT@12 @49 ++ eglQueryDeviceStringEXT@8 @50 ++ eglCreateImageKHR@20 @51 ++ eglDestroyImageKHR@8 @52 ++ eglCreateDeviceANGLE@12 @53 ++ eglReleaseDeviceANGLE@4 @54 + + ; 1.5 entry points +- eglCreateSync @38 +- eglDestroySync @39 +- eglClientWaitSync @40 +- eglGetSyncAttrib @41 +- eglCreateImage @42 +- eglDestroyImage @43 +- eglGetPlatformDisplay @44 +- eglCreatePlatformWindowSurface @45 +- eglCreatePlatformPixmapSurface @46 +- eglWaitSync @47 ++ eglCreateSync@12 @38 ++ eglDestroySync@8 @39 ++ eglClientWaitSync@16 @40 ++ eglGetSyncAttrib@16 @41 ++ eglCreateImage@20 @42 ++ eglDestroyImage@8 @43 ++ eglGetPlatformDisplay@12 @44 ++ eglCreatePlatformWindowSurface@16 @45 ++ eglCreatePlatformPixmapSurface@16 @46 ++ eglWaitSync@12 @47 +diff --git a/src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def b/src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def +index ab0320d..a4a9d95 100644 +--- a/src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def ++++ b/src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def +@@ -39,3 +39,22 @@ EXPORTS + eglGetPlatformDisplayEXT@12 @35 + eglQuerySurfacePointerANGLE@16 @36 + eglPostSubBufferNV@24 @37 ++ eglQueryDisplayAttribEXT@12 @48 ++ eglQueryDeviceAttribEXT@12 @49 ++ eglQueryDeviceStringEXT@8 @50 ++ eglCreateImageKHR@20 @51 ++ eglDestroyImageKHR@8 @52 ++ eglCreateDeviceANGLE@12 @53 ++ eglReleaseDeviceANGLE@4 @54 ++ ++ ; 1.5 entry points ++ eglCreateSync@12 @38 ++ eglDestroySync@8 @39 ++ eglClientWaitSync@16 @40 ++ eglGetSyncAttrib@16 @41 ++ eglCreateImage@20 @42 ++ eglDestroyImage@8 @43 ++ eglGetPlatformDisplay@12 @44 ++ eglCreatePlatformWindowSurface@16 @45 ++ eglCreatePlatformPixmapSurface@16 @46 ++ eglWaitSync@12 @47 +diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def b/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def +index e02b85b..db17bb4 100644 +--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def ++++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def +@@ -177,6 +177,31 @@ EXPORTS + glGetBufferPointervOES@12 @287 + glMapBufferRangeEXT@16 @288 + glFlushMappedBufferRangeEXT@12 @289 ++ glDiscardFramebufferEXT@12 @293 ++ glInsertEventMarkerEXT@8 @294 ++ glPushGroupMarkerEXT@8 @295 ++ glPopGroupMarkerEXT@0 @296 ++ glEGLImageTargetTexture2DOES@8 @297 ++ glEGLImageTargetRenderbufferStorageOES@8 @298 ++ glBindVertexArrayOES@4 @299 ++ glDeleteVertexArraysOES@8 @300 ++ glGenVertexArraysOES@8 @301 ++ glIsVertexArrayOES@4 @302 ++ glDebugMessageControlKHR@24 @303 ++ glDebugMessageInsertKHR@24 @304 ++ glDebugMessageCallbackKHR@8 @305 ++ glGetDebugMessageLogKHR@32 @306 ++ glPushDebugGroupKHR@16 @307 ++ glPopDebugGroupKHR@0 @308 ++ glObjectLabelKHR@16 @309 ++ glGetObjectLabelKHR@20 @310 ++ glObjectPtrLabelKHR@12 @311 ++ glGetObjectPtrLabelKHR@16 @312 ++ glGetPointervKHR@8 @313 ++ glQueryCounterEXT@8 @314 ++ glGetQueryObjectivEXT@12 @315 ++ glGetQueryObjecti64vEXT@12 @316 ++ glGetQueryObjectui64vEXT@12 @317 + + ; GLES 3.0 Functions + glReadBuffer@4 @180 +@@ -284,5 +309,8 @@ EXPORTS + glTexStorage3D@24 @282 + glGetInternalformativ@20 @283 + +- ; Setting up TRACE macro callbacks +- SetTraceFunctionPointers@8 @284 ++ ; ANGLE Platform Implementation ++ ANGLEPlatformCurrent@0 @290 ++ ANGLEPlatformInitialize@4 @291 ++ ANGLEPlatformShutdown@0 @292 ++ +\ No newline at end of file +diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def b/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def +index e2b2c33..5a4966f 100644 +--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def ++++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def +@@ -177,6 +177,31 @@ EXPORTS + glGetBufferPointervOES@12 @287 + glMapBufferRangeEXT@16 @288 + glFlushMappedBufferRangeEXT@12 @289 ++ glDiscardFramebufferEXT@12 @293 ++ glInsertEventMarkerEXT@8 @294 ++ glPushGroupMarkerEXT@8 @295 ++ glPopGroupMarkerEXT@0 @296 ++ glEGLImageTargetTexture2DOES@8 @297 ++ glEGLImageTargetRenderbufferStorageOES@8 @298 ++ glBindVertexArrayOES@4 @299 ++ glDeleteVertexArraysOES@8 @300 ++ glGenVertexArraysOES@8 @301 ++ glIsVertexArrayOES@4 @302 ++ glDebugMessageControlKHR@24 @303 ++ glDebugMessageInsertKHR@24 @304 ++ glDebugMessageCallbackKHR@8 @305 ++ glGetDebugMessageLogKHR@32 @306 ++ glPushDebugGroupKHR@16 @307 ++ glPopDebugGroupKHR@0 @308 ++ glObjectLabelKHR@16 @309 ++ glGetObjectLabelKHR@20 @310 ++ glObjectPtrLabelKHR@12 @311 ++ glGetObjectPtrLabelKHR@16 @312 ++ glGetPointervKHR@8 @313 ++ glQueryCounterEXT@8 @314 ++ glGetQueryObjectivEXT@12 @315 ++ glGetQueryObjecti64vEXT@12 @316 ++ glGetQueryObjectui64vEXT@12 @317 + + ; GLES 3.0 Functions + glReadBuffer@4 @180 +@@ -284,5 +309,8 @@ EXPORTS + glTexStorage3D@24 @282 + glGetInternalformativ@20 @283 + +- ; Setting up TRACE macro callbacks +- SetTraceFunctionPointers@8 @284 ++ ; ANGLE Platform Implementation ++ ANGLEPlatformCurrent@0 @290 ++ ANGLEPlatformInitialize@4 @291 ++ ANGLEPlatformShutdown@0 @292 ++ +\ No newline at end of file -- -2.1.4 +2.7.0.windows.1 -- cgit v1.2.3