Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / third_party / angle / src / libGLESv2 / renderer / d3d11 / SwapChain11.h
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_