summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/RenderTarget9.h
blob: 4585697f4c10a03599b220d448f455d120194216 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//
// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//

// RenderTarget9.h: Defines a D3D9-specific wrapper for IDirect3DSurface9 pointers
// retained by Renderbuffers.

#ifndef LIBGLESV2_RENDERER_RENDERTARGET9_H_
#define LIBGLESV2_RENDERER_RENDERTARGET9_H_

#include "libGLESv2/renderer/RenderTarget.h"

namespace rx
{
class Renderer9;
class SwapChain9;

class RenderTarget9 : public RenderTarget
{
  public:
    RenderTarget9() { }
    virtual ~RenderTarget9() { }

    static RenderTarget9 *makeRenderTarget9(RenderTarget *renderTarget);

    void invalidate(GLint x, GLint y, GLsizei width, GLsizei height) override;

    virtual IDirect3DSurface9 *getSurface() = 0;

  private:
    DISALLOW_COPY_AND_ASSIGN(RenderTarget9);
};

class TextureRenderTarget9 : public RenderTarget9
{
  public:
    TextureRenderTarget9(IDirect3DSurface9 *surface, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth,
                         GLsizei samples);
    virtual ~TextureRenderTarget9();

    GLsizei getWidth() const override;
    GLsizei getHeight() const override;
    GLsizei getDepth() const override;
    GLenum getInternalFormat() const override;
    GLenum getActualFormat() const override;
    GLsizei getSamples() const override;

    IDirect3DSurface9 *getSurface() override;

  private:
    DISALLOW_COPY_AND_ASSIGN(TextureRenderTarget9);

    GLsizei mWidth;
    GLsizei mHeight;
    GLsizei mDepth;
    GLenum mInternalFormat;
    GLenum mActualFormat;
    GLsizei mSamples;

    IDirect3DSurface9 *mRenderTarget;
};

class SurfaceRenderTarget9 : public RenderTarget9
{
  public:
    SurfaceRenderTarget9(SwapChain9 *swapChain, bool depth);
    virtual ~SurfaceRenderTarget9();

    GLsizei getWidth() const override;
    GLsizei getHeight() const override;
    GLsizei getDepth() const override;
    GLenum getInternalFormat() const override;
    GLenum getActualFormat() const override;
    GLsizei getSamples() const override;

    IDirect3DSurface9 *getSurface() override;

  private:
    DISALLOW_COPY_AND_ASSIGN(SurfaceRenderTarget9);

    SwapChain9 *mSwapChain;
    bool mDepth;
};

}

#endif // LIBGLESV2_RENDERER_RENDERTARGET9_H_