diff options
Diffstat (limited to 'src/angle/patches/0002-ANGLE-Add-support-for-querying-platform-device.patch')
-rw-r--r-- | src/angle/patches/0002-ANGLE-Add-support-for-querying-platform-device.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/angle/patches/0002-ANGLE-Add-support-for-querying-platform-device.patch b/src/angle/patches/0002-ANGLE-Add-support-for-querying-platform-device.patch new file mode 100644 index 0000000000..d548ce465f --- /dev/null +++ b/src/angle/patches/0002-ANGLE-Add-support-for-querying-platform-device.patch @@ -0,0 +1,83 @@ +From 2f2aabec376cb749a7d0db9e7f754fbfd28b8a72 Mon Sep 17 00:00:00 2001 +From: Oliver Wolff <oliver.wolff@qt.io> +Date: Wed, 22 Aug 2018 12:58:13 +0200 +Subject: [PATCH 2/8] ANGLE: Add support for querying platform device + +The EGL_EXT_device_base extension allows for querying the platform +device of the graphics hardware via eglQueryDisplayAttribEXT(). +As that extension is not supported by ANGLE, this patch adds similar +functionality to the existing eglQuerySurfacePointerANGLE API. When +EGL_DEVICE_EXT is passed as the queried attribute, the underlying +D3D/DXGI device pointer is passed back to the caller via the value +argument. + +The D3D device is needed for video support in QtMultimedia as well as +the IDXGIDevice3::Trim() calls required by the Windows Store. + +Change-Id: Ib3dfd3edc47dbcc02b07f71980ba785508f2ee57 +--- + src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp | 4 ++++ + src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h | 1 + + src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 5 +++++ + src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h | 2 ++ + 4 files changed, 12 insertions(+) + +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp +index 8e78b71a36..ceb022d14c 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp +@@ -351,6 +351,10 @@ egl::Error SurfaceD3D::querySurfacePointerANGLE(EGLint attribute, void **value) + { + *value = mSwapChain->getKeyedMutex(); + } ++ else if (attribute == EGL_DEVICE_EXT) ++ { ++ *value = mSwapChain->getDevice(); ++ } + else UNREACHABLE(); + + return egl::NoError(); +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h +index 81c3d13da4..017737b878 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h +@@ -58,6 +58,7 @@ class SwapChainD3D : angle::NonCopyable + EGLint width, + EGLint height) = 0; + virtual void recreate() = 0; ++ virtual void *getDevice() { return nullptr; } + + virtual RenderTargetD3D *getColorRenderTarget() = 0; + virtual RenderTargetD3D *getDepthStencilRenderTarget() = 0; +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp +index 19bcaae776..05bb5d9863 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp +@@ -1007,6 +1007,11 @@ void SwapChain11::recreate() + // possibly should use this method instead of reset + } + ++void *rx::SwapChain11::getDevice() ++{ ++ return mRenderer->getDevice(); ++} ++ + RenderTargetD3D *SwapChain11::getColorRenderTarget() + { + return &mColorRenderTarget; +diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h +index 5ce2af193d..eca068210b 100644 +--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h ++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h +@@ -61,6 +61,8 @@ class SwapChain11 final : public SwapChainD3D + void *getKeyedMutex() override; + EGLint getSamples() const { return mEGLSamples; } + ++ void *getDevice() override; ++ + egl::Error getSyncValues(EGLuint64KHR *ust, EGLuint64KHR *msc, EGLuint64KHR *sbc) override; + + private: +-- +2.15.0.windows.1 + |