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.
7 // SwapChain11.h: Defines a back-end specific class for the D3D11 swap chain.
9 #ifndef LIBGLESV2_RENDERER_SWAPCHAIN11_H_
10 #define LIBGLESV2_RENDERER_SWAPCHAIN11_H_
12 #include "common/angleutils.h"
13 #include "libGLESv2/renderer/SwapChain.h"
19 class SwapChain11 : public SwapChain
22 SwapChain11(Renderer11 *renderer, HWND window, HANDLE shareHandle,
23 GLenum backBufferFormat, GLenum depthBufferFormat);
24 virtual ~SwapChain11();
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();
31 virtual ID3D11Texture2D *getOffscreenTexture();
32 virtual ID3D11RenderTargetView *getRenderTarget();
33 virtual ID3D11ShaderResourceView *getRenderTargetShaderResource();
35 virtual ID3D11Texture2D *getDepthStencilTexture();
36 virtual ID3D11DepthStencilView *getDepthStencil();
37 virtual ID3D11ShaderResourceView *getDepthStencilShaderResource();
39 EGLint getWidth() const { return mWidth; }
40 EGLint getHeight() const { return mHeight; }
42 static SwapChain11 *makeSwapChain11(SwapChain *swapChain);
45 DISALLOW_COPY_AND_ASSIGN(SwapChain11);
48 void initPassThroughResources();
49 void releaseOffscreenTexture();
50 EGLint resetOffscreenTexture(int backbufferWidth, int backbufferHeight);
52 Renderer11 *mRenderer;
55 bool mAppCreatedShareHandle;
56 unsigned int mSwapInterval;
57 bool mPassThroughResourcesInit;
59 IDXGISwapChain *mSwapChain;
61 ID3D11Texture2D *mBackBufferTexture;
62 ID3D11RenderTargetView *mBackBufferRTView;
64 ID3D11Texture2D *mOffscreenTexture;
65 ID3D11RenderTargetView *mOffscreenRTView;
66 ID3D11ShaderResourceView *mOffscreenSRView;
68 ID3D11Texture2D *mDepthStencilTexture;
69 ID3D11DepthStencilView *mDepthStencilDSView;
70 ID3D11ShaderResourceView *mDepthStencilSRView;
72 ID3D11Buffer *mQuadVB;
73 ID3D11SamplerState *mPassThroughSampler;
74 ID3D11InputLayout *mPassThroughIL;
75 ID3D11VertexShader *mPassThroughVS;
76 ID3D11PixelShader *mPassThroughPS;
80 #endif // LIBGLESV2_RENDERER_SWAPCHAIN11_H_