gfx/angle/src/libGLESv2/renderer/TextureStorage11.h

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     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 //
     7 // TextureStorage11.h: Defines the abstract rx::TextureStorage11 class and its concrete derived
     8 // classes TextureStorage11_2D and TextureStorage11_Cube, which act as the interface to the D3D11 texture.
    10 #ifndef LIBGLESV2_RENDERER_TEXTURESTORAGE11_H_
    11 #define LIBGLESV2_RENDERER_TEXTURESTORAGE11_H_
    13 #include "libGLESv2/Texture.h"
    14 #include "libGLESv2/renderer/TextureStorage.h"
    16 namespace rx
    17 {
    18 class RenderTarget;
    19 class RenderTarget11;
    20 class Renderer;
    21 class Renderer11;
    22 class SwapChain11;
    24 class TextureStorage11 : public TextureStorage
    25 {
    26   public:
    27     TextureStorage11(Renderer *renderer, UINT bindFlags);
    28     virtual ~TextureStorage11();
    30     static TextureStorage11 *makeTextureStorage11(TextureStorage *storage);
    32     static DWORD GetTextureBindFlags(DXGI_FORMAT d3dfmt, GLenum glusage, bool forceRenderable);
    33     static bool IsTextureFormatRenderable(DXGI_FORMAT format);
    35     UINT getBindFlags() const;
    37     virtual ID3D11Texture2D *getBaseTexture() const;
    38     virtual ID3D11ShaderResourceView *getSRV() = 0;
    39     virtual RenderTarget *getRenderTarget() { return getRenderTarget(0); }
    40     virtual RenderTarget *getRenderTarget(int level) { return NULL; }
    41     virtual RenderTarget *getRenderTarget(GLenum faceTarget) { return getRenderTarget(faceTarget, 0); }
    42     virtual RenderTarget *getRenderTarget(GLenum faceTarget, int level) { return NULL; }
    44     virtual void generateMipmap(int level) {};
    45     virtual void generateMipmap(int face, int level) {};
    47     virtual int getLodOffset() const;
    48     virtual bool isRenderTarget() const;
    49     virtual bool isManaged() const;
    50     virtual int levelCount();
    51     UINT getSubresourceIndex(int level, int faceTarget);
    53     bool updateSubresourceLevel(ID3D11Texture2D *texture, unsigned int sourceSubresource, int level,
    54                                 int faceTarget, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height);
    56   protected:
    57     void generateMipmapLayer(RenderTarget11 *source, RenderTarget11 *dest);
    59     Renderer11 *mRenderer;
    60     int mLodOffset;
    61     unsigned int mMipLevels;
    63     ID3D11Texture2D *mTexture;
    64     DXGI_FORMAT mTextureFormat;
    65     DXGI_FORMAT mShaderResourceFormat;
    66     DXGI_FORMAT mRenderTargetFormat;
    67     DXGI_FORMAT mDepthStencilFormat;
    68     unsigned int mTextureWidth;
    69     unsigned int mTextureHeight;
    71     ID3D11ShaderResourceView *mSRV;
    73   private:
    74     DISALLOW_COPY_AND_ASSIGN(TextureStorage11);
    76     const UINT mBindFlags;
    77 };
    79 class TextureStorage11_2D : public TextureStorage11
    80 {
    81   public:
    82     TextureStorage11_2D(Renderer *renderer, SwapChain11 *swapchain);
    83     TextureStorage11_2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height);
    84     virtual ~TextureStorage11_2D();
    86     static TextureStorage11_2D *makeTextureStorage11_2D(TextureStorage *storage);
    88     virtual ID3D11ShaderResourceView *getSRV();
    89     virtual RenderTarget *getRenderTarget(int level);
    91     virtual void generateMipmap(int level);
    93   private:
    94     DISALLOW_COPY_AND_ASSIGN(TextureStorage11_2D);
    96     RenderTarget11 *mRenderTarget[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
    97 };
    99 class TextureStorage11_Cube : public TextureStorage11
   100 {
   101   public:
   102     TextureStorage11_Cube(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size);
   103     virtual ~TextureStorage11_Cube();
   105     static TextureStorage11_Cube *makeTextureStorage11_Cube(TextureStorage *storage);
   107     virtual ID3D11ShaderResourceView *getSRV();
   108     virtual RenderTarget *getRenderTarget(GLenum faceTarget, int level);
   110     virtual void generateMipmap(int face, int level);
   112   private:
   113     DISALLOW_COPY_AND_ASSIGN(TextureStorage11_Cube);
   115     RenderTarget11 *mRenderTarget[6][gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
   116 };
   118 }
   120 #endif // LIBGLESV2_RENDERER_TEXTURESTORAGE11_H_

mercurial