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 15namespace rx 16{ 17class Renderer11; 18 19class 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