summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h')
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h123
1 files changed, 76 insertions, 47 deletions
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 adcd07adb0..eca068210b 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
@@ -16,39 +16,54 @@
namespace rx
{
class Renderer11;
+class NativeWindow11;
-class SwapChain11 : public SwapChainD3D
+class SwapChain11 final : public SwapChainD3D
{
public:
SwapChain11(Renderer11 *renderer,
- NativeWindow nativeWindow,
+ NativeWindow11 *nativeWindow,
HANDLE shareHandle,
+ IUnknown *d3dTexture,
GLenum backBufferFormat,
GLenum depthBufferFormat,
- EGLint orientation);
- virtual ~SwapChain11();
-
- EGLint resize(EGLint backbufferWidth, EGLint backbufferHeight);
- virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval);
- virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height);
- virtual void recreate();
-
- RenderTargetD3D *getColorRenderTarget() override { return &mColorRenderTarget; }
- RenderTargetD3D *getDepthStencilRenderTarget() override { return &mDepthStencilRenderTarget; }
-
- virtual ID3D11Texture2D *getOffscreenTexture();
- virtual ID3D11RenderTargetView *getRenderTarget();
- virtual ID3D11ShaderResourceView *getRenderTargetShaderResource();
-
- virtual ID3D11Texture2D *getDepthStencilTexture();
- virtual ID3D11DepthStencilView *getDepthStencil();
- virtual ID3D11ShaderResourceView *getDepthStencilShaderResource();
+ EGLint orientation,
+ EGLint samples);
+ ~SwapChain11() override;
+
+ EGLint resize(const gl::Context *context,
+ EGLint backbufferWidth,
+ EGLint backbufferHeight) override;
+ EGLint reset(const gl::Context *context,
+ EGLint backbufferWidth,
+ EGLint backbufferHeight,
+ EGLint swapInterval) override;
+ EGLint swapRect(const gl::Context *context,
+ EGLint x,
+ EGLint y,
+ EGLint width,
+ EGLint height) override;
+ void recreate() override;
+
+ RenderTargetD3D *getColorRenderTarget() override;
+ RenderTargetD3D *getDepthStencilRenderTarget() override;
+
+ const TextureHelper11 &getOffscreenTexture();
+ const d3d11::RenderTargetView &getRenderTarget();
+ const d3d11::SharedSRV &getRenderTargetShaderResource();
+
+ const TextureHelper11 &getDepthStencilTexture();
+ const d3d11::DepthStencilView &getDepthStencil();
+ const d3d11::SharedSRV &getDepthStencilShaderResource();
EGLint getWidth() const { return mWidth; }
EGLint getHeight() const { return mHeight; }
- void *getKeyedMutex() override { return mKeyedMutex; }
+ void *getKeyedMutex() override;
+ EGLint getSamples() const { return mEGLSamples; }
+
+ void *getDevice() override;
- virtual void *getDevice();
+ egl::Error getSyncValues(EGLuint64KHR *ust, EGLuint64KHR *msc, EGLuint64KHR *sbc) override;
private:
void release();
@@ -56,14 +71,23 @@ class SwapChain11 : public SwapChainD3D
void releaseOffscreenColorBuffer();
void releaseOffscreenDepthBuffer();
- EGLint resetOffscreenBuffers(int backbufferWidth, int backbufferHeight);
- EGLint resetOffscreenColorBuffer(int backbufferWidth, int backbufferHeight);
+ EGLint resetOffscreenBuffers(const gl::Context *context,
+ int backbufferWidth,
+ int backbufferHeight);
+ EGLint resetOffscreenColorBuffer(const gl::Context *context,
+ int backbufferWidth,
+ int backbufferHeight);
EGLint resetOffscreenDepthBuffer(int backbufferWidth, int backbufferHeight);
DXGI_FORMAT getSwapChainNativeFormat() const;
- EGLint copyOffscreenToBackbuffer(EGLint x, EGLint y, EGLint width, EGLint height);
- EGLint present(EGLint x, EGLint y, EGLint width, EGLint height);
+ EGLint copyOffscreenToBackbuffer(const gl::Context *context,
+ EGLint x,
+ EGLint y,
+ EGLint width,
+ EGLint height);
+ EGLint present(const gl::Context *context, EGLint x, EGLint y, EGLint width, EGLint height);
+ UINT getD3DSamples() const;
Renderer11 *mRenderer;
EGLint mWidth;
@@ -73,36 +97,41 @@ class SwapChain11 : public SwapChainD3D
unsigned int mSwapInterval;
bool mPassThroughResourcesInit;
+ NativeWindow11 *mNativeWindow; // Handler for the Window that the surface is created for.
+
bool mFirstSwap;
- DXGISwapChain *mSwapChain;
-#if defined(ANGLE_ENABLE_D3D11_1)
+ IDXGISwapChain *mSwapChain;
IDXGISwapChain1 *mSwapChain1;
-#endif
IDXGIKeyedMutex *mKeyedMutex;
- ID3D11Texture2D *mBackBufferTexture;
- ID3D11RenderTargetView *mBackBufferRTView;
- ID3D11ShaderResourceView *mBackBufferSRView;
+ TextureHelper11 mBackBufferTexture;
+ d3d11::RenderTargetView mBackBufferRTView;
+ d3d11::SharedSRV mBackBufferSRView;
const bool mNeedsOffscreenTexture;
- ID3D11Texture2D *mOffscreenTexture;
- ID3D11RenderTargetView *mOffscreenRTView;
- ID3D11ShaderResourceView *mOffscreenSRView;
-
- ID3D11Texture2D *mDepthStencilTexture;
- ID3D11DepthStencilView *mDepthStencilDSView;
- ID3D11ShaderResourceView *mDepthStencilSRView;
-
- ID3D11Buffer *mQuadVB;
- ID3D11SamplerState *mPassThroughSampler;
- ID3D11InputLayout *mPassThroughIL;
- ID3D11VertexShader *mPassThroughVS;
- ID3D11PixelShader *mPassThroughPS;
- ID3D11RasterizerState *mPassThroughRS;
+ TextureHelper11 mOffscreenTexture;
+ d3d11::RenderTargetView mOffscreenRTView;
+ d3d11::SharedSRV mOffscreenSRView;
+ bool mNeedsOffscreenTextureCopy;
+ TextureHelper11 mOffscreenTextureCopyForSRV;
+
+ TextureHelper11 mDepthStencilTexture;
+ d3d11::DepthStencilView mDepthStencilDSView;
+ d3d11::SharedSRV mDepthStencilSRView;
+
+ d3d11::Buffer mQuadVB;
+ d3d11::SamplerState mPassThroughSampler;
+ d3d11::InputLayout mPassThroughIL;
+ d3d11::VertexShader mPassThroughVS;
+ d3d11::PixelShader mPassThroughPS;
+ d3d11::RasterizerState mPassThroughRS;
SurfaceRenderTarget11 mColorRenderTarget;
SurfaceRenderTarget11 mDepthStencilRenderTarget;
+
+ EGLint mEGLSamples;
+ LONGLONG mQPCFrequency;
};
-}
+} // namespace rx
#endif // LIBANGLE_RENDERER_D3D_D3D11_SWAPCHAIN11_H_