Home | History | Annotate | Download | only in d3d11
      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