132fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com// 232fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. 332fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be 432fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com// found in the LICENSE file. 532fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com// 632fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 732fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com// SwapChain11.h: Defines a back-end specific class for the D3D11 swap chain. 832fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 932fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com#ifndef LIBGLESV2_RENDERER_SWAPCHAIN11_H_ 1032fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com#define LIBGLESV2_RENDERER_SWAPCHAIN11_H_ 1132fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 1232fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com#include "common/angleutils.h" 1332fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com#include "libGLESv2/renderer/SwapChain.h" 1432fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 1532fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.comnamespace rx 1632fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com{ 1732fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.comclass Renderer11; 1832fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 1932fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.comclass SwapChain11 : public SwapChain 2032fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com{ 2132fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com public: 2232fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com SwapChain11(Renderer11 *renderer, HWND window, HANDLE shareHandle, 2332fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com GLenum backBufferFormat, GLenum depthBufferFormat); 2432fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com virtual ~SwapChain11(); 2532fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 26c71ca75ad647335876ed6961ebf461203df4caddshannon.woods@transgaming.com EGLint resize(EGLint backbufferWidth, EGLint backbufferHeight); 2732fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval); 2832fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height); 298bce3f59f55ebbef64e2a7b0f024644afbebd5b0shannon.woods%transgaming.com@gtempaccount.com virtual void recreate(); 3032fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 315c25ed2f8aa6f1b2b906e9facbd6da21501cee70shannon.woods@transgaming.com virtual ID3D11Texture2D *getOffscreenTexture(); 3232fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com virtual ID3D11RenderTargetView *getRenderTarget(); 335c25ed2f8aa6f1b2b906e9facbd6da21501cee70shannon.woods@transgaming.com virtual ID3D11ShaderResourceView *getRenderTargetShaderResource(); 345c25ed2f8aa6f1b2b906e9facbd6da21501cee70shannon.woods@transgaming.com 357e23285f51e48e8f3d75c99a1451023543fb4c66shannon.woods@transgaming.com virtual ID3D11Texture2D *getDepthStencilTexture(); 3632fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com virtual ID3D11DepthStencilView *getDepthStencil(); 3788f9cbf254dbc9ee0d87c84155cbcd3b2ca4f853Geoff Lang virtual ID3D11ShaderResourceView *getDepthStencilShaderResource(); 3832fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 39b6b27bc4179f0cab0c64c599d19ce2f4f2623d98daniel@transgaming.com EGLint getWidth() const { return mWidth; } 40b6b27bc4179f0cab0c64c599d19ce2f4f2623d98daniel@transgaming.com EGLint getHeight() const { return mHeight; } 41b6b27bc4179f0cab0c64c599d19ce2f4f2623d98daniel@transgaming.com 42d733bb88bc5544f6e55bc359e1ce26faa5d45565daniel@transgaming.com static SwapChain11 *makeSwapChain11(SwapChain *swapChain); 43d733bb88bc5544f6e55bc359e1ce26faa5d45565daniel@transgaming.com 4432fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com private: 4532fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com DISALLOW_COPY_AND_ASSIGN(SwapChain11); 4632fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 4732fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com void release(); 48211fa2edc6290101d995dac7a21de54be3e0aab3shannon.woods@transgaming.com void initPassThroughResources(); 4930f52c6c5ad8f593bbfb91b3e31bc91e505feb3ashannon.woods@transgaming.com void releaseOffscreenTexture(); 50ae81383606efb5f9b06e7e21e5ed4ac526b25248shannon.woods@transgaming.com EGLint resetOffscreenTexture(int backbufferWidth, int backbufferHeight); 5132fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 5232fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com Renderer11 *mRenderer; 5332fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com EGLint mHeight; 5432fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com EGLint mWidth; 55c60c5215ebab426654d1670282d15652667e38dashannon.woods@transgaming.com bool mAppCreatedShareHandle; 56ad74a4b10a90d0353ff941ad792874f1e1440374shannon.woods@transgaming.com unsigned int mSwapInterval; 57211fa2edc6290101d995dac7a21de54be3e0aab3shannon.woods@transgaming.com bool mPassThroughResourcesInit; 5832fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 5932fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com IDXGISwapChain *mSwapChain; 60c8c70adcb87042b8fc509025f44ebae1c2291bd5daniel@transgaming.com 61c8c70adcb87042b8fc509025f44ebae1c2291bd5daniel@transgaming.com ID3D11Texture2D *mBackBufferTexture; 62c8c70adcb87042b8fc509025f44ebae1c2291bd5daniel@transgaming.com ID3D11RenderTargetView *mBackBufferRTView; 63c8c70adcb87042b8fc509025f44ebae1c2291bd5daniel@transgaming.com 6432fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com ID3D11Texture2D *mOffscreenTexture; 65c8c70adcb87042b8fc509025f44ebae1c2291bd5daniel@transgaming.com ID3D11RenderTargetView *mOffscreenRTView; 665c25ed2f8aa6f1b2b906e9facbd6da21501cee70shannon.woods@transgaming.com ID3D11ShaderResourceView *mOffscreenSRView; 67c8c70adcb87042b8fc509025f44ebae1c2291bd5daniel@transgaming.com 68c8c70adcb87042b8fc509025f44ebae1c2291bd5daniel@transgaming.com ID3D11Texture2D *mDepthStencilTexture; 69c8c70adcb87042b8fc509025f44ebae1c2291bd5daniel@transgaming.com ID3D11DepthStencilView *mDepthStencilDSView; 7088f9cbf254dbc9ee0d87c84155cbcd3b2ca4f853Geoff Lang ID3D11ShaderResourceView *mDepthStencilSRView; 71e097047e2ae1400cb2e741aa50a51781fc28dce4daniel@transgaming.com 72e097047e2ae1400cb2e741aa50a51781fc28dce4daniel@transgaming.com ID3D11Buffer *mQuadVB; 73e097047e2ae1400cb2e741aa50a51781fc28dce4daniel@transgaming.com ID3D11SamplerState *mPassThroughSampler; 74e097047e2ae1400cb2e741aa50a51781fc28dce4daniel@transgaming.com ID3D11InputLayout *mPassThroughIL; 75e097047e2ae1400cb2e741aa50a51781fc28dce4daniel@transgaming.com ID3D11VertexShader *mPassThroughVS; 76e097047e2ae1400cb2e741aa50a51781fc28dce4daniel@transgaming.com ID3D11PixelShader *mPassThroughPS; 7732fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com}; 7832fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com 7932fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com} 8032fdf822840418a1bf890d1f1f0fea68b43006b0daniel@transgaming.com#endif // LIBGLESV2_RENDERER_SWAPCHAIN11_H_ 81