tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

RenderTarget11.h (5118B)


      1 //
      2 // Copyright 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 LIBANGLE_RENDERER_D3D_D3D11_RENDERTARGET11_H_
     11 #define LIBANGLE_RENDERER_D3D_D3D11_RENDERTARGET11_H_
     12 
     13 #include "libANGLE/renderer/d3d/RenderTargetD3D.h"
     14 #include "libANGLE/renderer/d3d/d3d11/ResourceManager11.h"
     15 #include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
     16 #include "libANGLE/renderer/d3d/d3d11/texture_format_table.h"
     17 
     18 namespace rx
     19 {
     20 class SwapChain11;
     21 class Renderer11;
     22 
     23 class RenderTarget11 : public RenderTargetD3D
     24 {
     25  public:
     26    RenderTarget11(const d3d11::Format &formatSet);
     27    ~RenderTarget11() override;
     28 
     29    virtual const TextureHelper11 &getTexture() const                                = 0;
     30    virtual const d3d11::RenderTargetView &getRenderTargetView() const               = 0;
     31    virtual const d3d11::DepthStencilView &getDepthStencilView() const               = 0;
     32    virtual angle::Result getShaderResourceView(const gl::Context *context,
     33                                                const d3d11::SharedSRV **outSRV)     = 0;
     34    virtual angle::Result getBlitShaderResourceView(const gl::Context *context,
     35                                                    const d3d11::SharedSRV **outSRV) = 0;
     36 
     37    virtual unsigned int getSubresourceIndex() const = 0;
     38 
     39    const d3d11::Format &getFormatSet() const { return mFormatSet; }
     40 
     41  protected:
     42    const d3d11::Format &mFormatSet;
     43 };
     44 
     45 class TextureRenderTarget11 : public RenderTarget11
     46 {
     47  public:
     48    // TextureRenderTarget11 takes ownership of any D3D11 resources it is given and will AddRef them
     49    TextureRenderTarget11(d3d11::RenderTargetView &&rtv,
     50                          const TextureHelper11 &resource,
     51                          const d3d11::SharedSRV &srv,
     52                          const d3d11::SharedSRV &blitSRV,
     53                          GLenum internalFormat,
     54                          const d3d11::Format &formatSet,
     55                          GLsizei width,
     56                          GLsizei height,
     57                          GLsizei depth,
     58                          GLsizei samples);
     59    TextureRenderTarget11(d3d11::DepthStencilView &&dsv,
     60                          const TextureHelper11 &resource,
     61                          const d3d11::SharedSRV &srv,
     62                          GLenum internalFormat,
     63                          const d3d11::Format &formatSet,
     64                          GLsizei width,
     65                          GLsizei height,
     66                          GLsizei depth,
     67                          GLsizei samples);
     68    ~TextureRenderTarget11() override;
     69 
     70    GLsizei getWidth() const override;
     71    GLsizei getHeight() const override;
     72    GLsizei getDepth() const override;
     73    GLenum getInternalFormat() const override;
     74    GLsizei getSamples() const override;
     75 
     76    const TextureHelper11 &getTexture() const override;
     77    const d3d11::RenderTargetView &getRenderTargetView() const override;
     78    const d3d11::DepthStencilView &getDepthStencilView() const override;
     79    angle::Result getShaderResourceView(const gl::Context *context,
     80                                        const d3d11::SharedSRV **outSRV) override;
     81    angle::Result getBlitShaderResourceView(const gl::Context *context,
     82                                            const d3d11::SharedSRV **outSRV) override;
     83 
     84    unsigned int getSubresourceIndex() const override;
     85 
     86  private:
     87    GLsizei mWidth;
     88    GLsizei mHeight;
     89    GLsizei mDepth;
     90    GLenum mInternalFormat;
     91    GLsizei mSamples;
     92 
     93    unsigned int mSubresourceIndex;
     94    TextureHelper11 mTexture;
     95    d3d11::RenderTargetView mRenderTarget;
     96    d3d11::DepthStencilView mDepthStencil;
     97    d3d11::SharedSRV mShaderResource;
     98 
     99    // Shader resource view to use with internal blit shaders. Not set for depth/stencil render
    100    // targets.
    101    d3d11::SharedSRV mBlitShaderResource;
    102 };
    103 
    104 class SurfaceRenderTarget11 : public RenderTarget11
    105 {
    106  public:
    107    SurfaceRenderTarget11(SwapChain11 *swapChain, Renderer11 *renderer, bool depth);
    108    ~SurfaceRenderTarget11() override;
    109 
    110    GLsizei getWidth() const override;
    111    GLsizei getHeight() const override;
    112    GLsizei getDepth() const override;
    113    GLenum getInternalFormat() const override;
    114    GLsizei getSamples() const override;
    115 
    116    const TextureHelper11 &getTexture() const override;
    117    const d3d11::RenderTargetView &getRenderTargetView() const override;
    118    const d3d11::DepthStencilView &getDepthStencilView() const override;
    119    angle::Result getShaderResourceView(const gl::Context *context,
    120                                        const d3d11::SharedSRV **outSRV) override;
    121    angle::Result getBlitShaderResourceView(const gl::Context *context,
    122                                            const d3d11::SharedSRV **outSRV) override;
    123 
    124    unsigned int getSubresourceIndex() const override;
    125 
    126  private:
    127    SwapChain11 *mSwapChain;
    128    bool mDepth;
    129 };
    130 
    131 }  // namespace rx
    132 
    133 #endif  // LIBANGLE_RENDERER_D3D_D3D11_RENDERTARGET11_H_