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// RenderTarget11.h: Defines a DX11-specific wrapper for ID3D11View pointers
8// retained by Renderbuffers.
9
10#ifndef LIBGLESV2_RENDERER_RENDERTARGET11_H_
11#define LIBGLESV2_RENDERER_RENDERTARGET11_H_
12
13#include "libGLESv2/renderer/RenderTarget.h"
14
15namespace rx
16{
17class Renderer;
18class Renderer11;
19
20class RenderTarget11 : public RenderTarget
21{
22  public:
23    // RenderTarget11 takes ownership of any D3D11 resources it is given and will AddRef them
24    RenderTarget11(Renderer *renderer, ID3D11RenderTargetView *rtv, ID3D11Resource *resource, ID3D11ShaderResourceView *srv, GLsizei width, GLsizei height, GLsizei depth);
25    RenderTarget11(Renderer *renderer, ID3D11DepthStencilView *dsv, ID3D11Resource *resource, ID3D11ShaderResourceView *srv, GLsizei width, GLsizei height, GLsizei depth);
26    RenderTarget11(Renderer *renderer, GLsizei width, GLsizei height, GLenum internalFormat, GLsizei samples);
27    virtual ~RenderTarget11();
28
29    static RenderTarget11 *makeRenderTarget11(RenderTarget *renderTarget);
30
31    virtual void invalidate(GLint x, GLint y, GLsizei width, GLsizei height);
32
33    ID3D11Resource *getTexture() const;
34    ID3D11RenderTargetView *getRenderTargetView() const;
35    ID3D11DepthStencilView *getDepthStencilView() const;
36    ID3D11ShaderResourceView *getShaderResourceView() const;
37
38    unsigned int getSubresourceIndex() const;
39
40  private:
41    DISALLOW_COPY_AND_ASSIGN(RenderTarget11);
42
43    unsigned int mSubresourceIndex;
44    ID3D11Resource *mTexture;
45    ID3D11RenderTargetView *mRenderTarget;
46    ID3D11DepthStencilView *mDepthStencil;
47    ID3D11ShaderResourceView *mShaderResource;
48
49    Renderer11 *mRenderer;
50};
51
52}
53
54#endif // LIBGLESV2_RENDERER_RENDERTARGET11_H_
55