Sat, 03 Jan 2015 20:18:00 +0100
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_