Warning, /graphics/krita/3rdparty/ext_googleangle/01-patches_qt5.12.12/0002-ANGLE-Add-support-for-querying-platform-device.patch is written in an unsupported language. File is not indexed.
0001 From 16ce00cdd735a4f369abfb71908c280b6cc3ab14 Mon Sep 17 00:00:00 2001
0002 From: Oliver Wolff <oliver.wolff@qt.io>
0003 Date: Wed, 22 Aug 2018 12:58:13 +0200
0004 Subject: [PATCH 02/17] ANGLE: Add support for querying platform device
0005
0006 The EGL_EXT_device_base extension allows for querying the platform
0007 device of the graphics hardware via eglQueryDisplayAttribEXT().
0008 As that extension is not supported by ANGLE, this patch adds similar
0009 functionality to the existing eglQuerySurfacePointerANGLE API. When
0010 EGL_DEVICE_EXT is passed as the queried attribute, the underlying
0011 D3D/DXGI device pointer is passed back to the caller via the value
0012 argument.
0013
0014 The D3D device is needed for the IDXGIDevice3::Trim() calls required by the Windows Store.
0015
0016 Change-Id: Ib3dfd3edc47dbcc02b07f71980ba785508f2ee57
0017 ---
0018 src/libANGLE/renderer/d3d/SurfaceD3D.cpp | 4 ++++
0019 src/libANGLE/renderer/d3d/SwapChainD3D.h | 1 +
0020 src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 5 +++++
0021 src/libANGLE/renderer/d3d/d3d11/SwapChain11.h | 2 ++
0022 4 files changed, 12 insertions(+)
0023
0024 diff --git a/src/libANGLE/renderer/d3d/SurfaceD3D.cpp b/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
0025 index 6e0e2b37e..6fc42139a 100644
0026 --- a/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
0027 +++ b/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
0028 @@ -429,6 +429,10 @@ egl::Error SurfaceD3D::querySurfacePointerANGLE(EGLint attribute, void **value)
0029 {
0030 *value = mSwapChain->getKeyedMutex();
0031 }
0032 + else if (attribute == EGL_DEVICE_EXT)
0033 + {
0034 + *value = mSwapChain->getDevice();
0035 + }
0036 else
0037 UNREACHABLE();
0038
0039 diff --git a/src/libANGLE/renderer/d3d/SwapChainD3D.h b/src/libANGLE/renderer/d3d/SwapChainD3D.h
0040 index fcbab95c8..8e4750a6d 100644
0041 --- a/src/libANGLE/renderer/d3d/SwapChainD3D.h
0042 +++ b/src/libANGLE/renderer/d3d/SwapChainD3D.h
0043 @@ -59,6 +59,7 @@ class SwapChainD3D : angle::NonCopyable
0044 EGLint width,
0045 EGLint height) = 0;
0046 virtual void recreate() = 0;
0047 + virtual void *getDevice() { return nullptr; }
0048
0049 virtual RenderTargetD3D *getColorRenderTarget() = 0;
0050 virtual RenderTargetD3D *getDepthStencilRenderTarget() = 0;
0051 diff --git a/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
0052 index 39a1f8b1f..a82b77b33 100644
0053 --- a/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
0054 +++ b/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
0055 @@ -1049,6 +1049,11 @@ void SwapChain11::recreate()
0056 // possibly should use this method instead of reset
0057 }
0058
0059 +void *rx::SwapChain11::getDevice()
0060 +{
0061 + return mRenderer->getDevice();
0062 +}
0063 +
0064 RenderTargetD3D *SwapChain11::getColorRenderTarget()
0065 {
0066 return &mColorRenderTarget;
0067 diff --git a/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h b/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
0068 index ada35b99b..9dd98462c 100644
0069 --- a/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
0070 +++ b/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
0071 @@ -59,6 +59,8 @@ class SwapChain11 final : public SwapChainD3D
0072 void *getKeyedMutex() override;
0073 EGLint getSamples() const { return mEGLSamples; }
0074
0075 + void *getDevice() override;
0076 +
0077 egl::Error getSyncValues(EGLuint64KHR *ust, EGLuint64KHR *msc, EGLuint64KHR *sbc) override;
0078
0079 private:
0080 --
0081 2.24.1.windows.2
0082