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