• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 // SwapChain9.h: Defines a back-end specific class for the D3D9 swap chain.
8 
9 #ifndef LIBGLESV2_RENDERER_SWAPCHAIN9_H_
10 #define LIBGLESV2_RENDERER_SWAPCHAIN9_H_
11 
12 #include "common/angleutils.h"
13 #include "libGLESv2/renderer/SwapChain.h"
14 
15 namespace rx
16 {
17 class Renderer9;
18 
19 class SwapChain9 : public SwapChain
20 {
21   public:
22     SwapChain9(Renderer9 *renderer, HWND window, HANDLE shareHandle,
23                GLenum backBufferFormat, GLenum depthBufferFormat);
24     virtual ~SwapChain9();
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 IDirect3DSurface9 *getRenderTarget();
32     virtual IDirect3DSurface9 *getDepthStencil();
33     virtual IDirect3DTexture9 *getOffscreenTexture();
34 
35     static SwapChain9 *makeSwapChain9(SwapChain *swapChain);
36 
37   private:
38     DISALLOW_COPY_AND_ASSIGN(SwapChain9);
39 
40     void release();
41 
42     Renderer9 *mRenderer;
43     EGLint mHeight;
44     EGLint mWidth;
45     EGLint mSwapInterval;
46 
47     IDirect3DSwapChain9 *mSwapChain;
48     IDirect3DSurface9 *mBackBuffer;
49     IDirect3DSurface9 *mRenderTarget;
50     IDirect3DSurface9 *mDepthStencil;
51     IDirect3DTexture9* mOffscreenTexture;
52 };
53 
54 }
55 #endif // LIBGLESV2_RENDERER_SWAPCHAIN9_H_
56