1 // 2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 7 // SwapChain11.h: Defines a back-end specific class for the D3D11 swap chain. 8 9 #ifndef LIBGLESV2_RENDERER_SWAPCHAIN11_H_ 10 #define LIBGLESV2_RENDERER_SWAPCHAIN11_H_ 11 12 #include "common/angleutils.h" 13 #include "libGLESv2/renderer/SwapChain.h" 14 15 namespace rx 16 { 17 class Renderer11; 18 19 class SwapChain11 : public SwapChain 20 { 21 public: 22 SwapChain11(Renderer11 *renderer, HWND window, HANDLE shareHandle, 23 GLenum backBufferFormat, GLenum depthBufferFormat); 24 virtual ~SwapChain11(); 25 26 EGLint resize(EGLint backbufferWidth, EGLint backbufferHeight); 27 virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval); 28 virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height); 29 virtual void recreate(); 30 31 virtual ID3D11Texture2D *getOffscreenTexture(); 32 virtual ID3D11RenderTargetView *getRenderTarget(); 33 virtual ID3D11ShaderResourceView *getRenderTargetShaderResource(); 34 35 virtual ID3D11Texture2D *getDepthStencilTexture(); 36 virtual ID3D11DepthStencilView *getDepthStencil(); 37 virtual ID3D11ShaderResourceView *getDepthStencilShaderResource(); 38 39 EGLint getWidth() const { return mWidth; } 40 EGLint getHeight() const { return mHeight; } 41 42 static SwapChain11 *makeSwapChain11(SwapChain *swapChain); 43 44 private: 45 DISALLOW_COPY_AND_ASSIGN(SwapChain11); 46 47 void release(); 48 void initPassThroughResources(); 49 void releaseOffscreenTexture(); 50 EGLint resetOffscreenTexture(int backbufferWidth, int backbufferHeight); 51 52 Renderer11 *mRenderer; 53 EGLint mHeight; 54 EGLint mWidth; 55 bool mAppCreatedShareHandle; 56 unsigned int mSwapInterval; 57 bool mPassThroughResourcesInit; 58 59 IDXGISwapChain *mSwapChain; 60 61 ID3D11Texture2D *mBackBufferTexture; 62 ID3D11RenderTargetView *mBackBufferRTView; 63 64 ID3D11Texture2D *mOffscreenTexture; 65 ID3D11RenderTargetView *mOffscreenRTView; 66 ID3D11ShaderResourceView *mOffscreenSRView; 67 68 ID3D11Texture2D *mDepthStencilTexture; 69 ID3D11DepthStencilView *mDepthStencilDSView; 70 ID3D11ShaderResourceView *mDepthStencilSRView; 71 72 ID3D11Buffer *mQuadVB; 73 ID3D11SamplerState *mPassThroughSampler; 74 ID3D11InputLayout *mPassThroughIL; 75 ID3D11VertexShader *mPassThroughVS; 76 ID3D11PixelShader *mPassThroughPS; 77 }; 78 79 } 80 #endif // LIBGLESV2_RENDERER_SWAPCHAIN11_H_ 81