Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / angle / src / libGLESv2 / renderer / d3d / d3d11 / RenderTarget11.h
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
15 namespace rx
16 {
17 class Renderer;
18 class Renderer11;
19
20 class 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_