michael@0: // michael@0: // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. michael@0: // Use of this source code is governed by a BSD-style license that can be michael@0: // found in the LICENSE file. michael@0: // michael@0: michael@0: // SwapChain11.h: Defines a back-end specific class for the D3D11 swap chain. michael@0: michael@0: #ifndef LIBGLESV2_RENDERER_SWAPCHAIN11_H_ michael@0: #define LIBGLESV2_RENDERER_SWAPCHAIN11_H_ michael@0: michael@0: #include "common/angleutils.h" michael@0: #include "libGLESv2/renderer/SwapChain.h" michael@0: michael@0: namespace rx michael@0: { michael@0: class Renderer11; michael@0: michael@0: class SwapChain11 : public SwapChain michael@0: { michael@0: public: michael@0: SwapChain11(Renderer11 *renderer, HWND window, HANDLE shareHandle, michael@0: GLenum backBufferFormat, GLenum depthBufferFormat); michael@0: virtual ~SwapChain11(); michael@0: michael@0: EGLint resize(EGLint backbufferWidth, EGLint backbufferHeight); michael@0: virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval); michael@0: virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height); michael@0: virtual void recreate(); michael@0: michael@0: virtual ID3D11Texture2D *getOffscreenTexture(); michael@0: virtual ID3D11RenderTargetView *getRenderTarget(); michael@0: virtual ID3D11ShaderResourceView *getRenderTargetShaderResource(); michael@0: michael@0: virtual ID3D11Texture2D *getDepthStencilTexture(); michael@0: virtual ID3D11DepthStencilView *getDepthStencil(); michael@0: michael@0: EGLint getWidth() const { return mWidth; } michael@0: EGLint getHeight() const { return mHeight; } michael@0: michael@0: static SwapChain11 *makeSwapChain11(SwapChain *swapChain); michael@0: michael@0: private: michael@0: DISALLOW_COPY_AND_ASSIGN(SwapChain11); michael@0: michael@0: void release(); michael@0: void initPassThroughResources(); michael@0: void releaseOffscreenTexture(); michael@0: EGLint resetOffscreenTexture(int backbufferWidth, int backbufferHeight); michael@0: michael@0: Renderer11 *mRenderer; michael@0: EGLint mHeight; michael@0: EGLint mWidth; michael@0: bool mAppCreatedShareHandle; michael@0: unsigned int mSwapInterval; michael@0: bool mPassThroughResourcesInit; michael@0: michael@0: IDXGISwapChain *mSwapChain; michael@0: michael@0: ID3D11Texture2D *mBackBufferTexture; michael@0: ID3D11RenderTargetView *mBackBufferRTView; michael@0: michael@0: ID3D11Texture2D *mOffscreenTexture; michael@0: ID3D11RenderTargetView *mOffscreenRTView; michael@0: ID3D11ShaderResourceView *mOffscreenSRView; michael@0: michael@0: ID3D11Texture2D *mDepthStencilTexture; michael@0: ID3D11DepthStencilView *mDepthStencilDSView; michael@0: michael@0: ID3D11Buffer *mQuadVB; michael@0: ID3D11SamplerState *mPassThroughSampler; michael@0: ID3D11InputLayout *mPassThroughIL; michael@0: ID3D11VertexShader *mPassThroughVS; michael@0: ID3D11PixelShader *mPassThroughPS; michael@0: }; michael@0: michael@0: } michael@0: #endif // LIBGLESV2_RENDERER_SWAPCHAIN11_H_