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) 2002-2010 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 // Renderbuffer.h: Defines the wrapper class gl::Renderbuffer, as well as the
8 // class hierarchy used to store its contents: RenderbufferStorage, Colorbuffer,
9 // DepthStencilbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer
10 // objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108.
12 #ifndef LIBGLESV2_RENDERBUFFER_H_
13 #define LIBGLESV2_RENDERBUFFER_H_
15 #define GL_APICALL
16 #include <GLES2/gl2.h>
18 #include "common/angleutils.h"
19 #include "common/RefCountObject.h"
21 namespace rx
22 {
23 class Renderer;
24 class SwapChain;
25 class RenderTarget;
26 }
28 namespace gl
29 {
30 class Texture2D;
31 class TextureCubeMap;
32 class Renderbuffer;
33 class Colorbuffer;
34 class DepthStencilbuffer;
36 class RenderbufferInterface
37 {
38 public:
39 RenderbufferInterface();
41 virtual ~RenderbufferInterface() {};
43 virtual void addProxyRef(const Renderbuffer *proxy);
44 virtual void releaseProxy(const Renderbuffer *proxy);
46 virtual rx::RenderTarget *getRenderTarget() = 0;
47 virtual rx::RenderTarget *getDepthStencil() = 0;
49 virtual GLsizei getWidth() const = 0;
50 virtual GLsizei getHeight() const = 0;
51 virtual GLenum getInternalFormat() const = 0;
52 virtual GLenum getActualFormat() const = 0;
53 virtual GLsizei getSamples() const = 0;
55 GLuint getRedSize() const;
56 GLuint getGreenSize() const;
57 GLuint getBlueSize() const;
58 GLuint getAlphaSize() const;
59 GLuint getDepthSize() const;
60 GLuint getStencilSize() const;
62 virtual unsigned int getSerial() const = 0;
64 private:
65 DISALLOW_COPY_AND_ASSIGN(RenderbufferInterface);
66 };
68 class RenderbufferTexture2D : public RenderbufferInterface
69 {
70 public:
71 RenderbufferTexture2D(Texture2D *texture, GLenum target);
73 virtual ~RenderbufferTexture2D();
75 void addProxyRef(const Renderbuffer *proxy);
76 void releaseProxy(const Renderbuffer *proxy);
78 rx::RenderTarget *getRenderTarget();
79 rx::RenderTarget *getDepthStencil();
81 virtual GLsizei getWidth() const;
82 virtual GLsizei getHeight() const;
83 virtual GLenum getInternalFormat() const;
84 virtual GLenum getActualFormat() const;
85 virtual GLsizei getSamples() const;
87 virtual unsigned int getSerial() const;
89 private:
90 DISALLOW_COPY_AND_ASSIGN(RenderbufferTexture2D);
92 BindingPointer <Texture2D> mTexture2D;
93 GLenum mTarget;
94 };
96 class RenderbufferTextureCubeMap : public RenderbufferInterface
97 {
98 public:
99 RenderbufferTextureCubeMap(TextureCubeMap *texture, GLenum target);
101 virtual ~RenderbufferTextureCubeMap();
103 void addProxyRef(const Renderbuffer *proxy);
104 void releaseProxy(const Renderbuffer *proxy);
106 rx::RenderTarget *getRenderTarget();
107 rx::RenderTarget *getDepthStencil();
109 virtual GLsizei getWidth() const;
110 virtual GLsizei getHeight() const;
111 virtual GLenum getInternalFormat() const;
112 virtual GLenum getActualFormat() const;
113 virtual GLsizei getSamples() const;
115 virtual unsigned int getSerial() const;
117 private:
118 DISALLOW_COPY_AND_ASSIGN(RenderbufferTextureCubeMap);
120 BindingPointer <TextureCubeMap> mTextureCubeMap;
121 GLenum mTarget;
122 };
124 // A class derived from RenderbufferStorage is created whenever glRenderbufferStorage
125 // is called. The specific concrete type depends on whether the internal format is
126 // colour depth, stencil or packed depth/stencil.
127 class RenderbufferStorage : public RenderbufferInterface
128 {
129 public:
130 RenderbufferStorage();
132 virtual ~RenderbufferStorage() = 0;
134 virtual rx::RenderTarget *getRenderTarget();
135 virtual rx::RenderTarget *getDepthStencil();
137 virtual GLsizei getWidth() const;
138 virtual GLsizei getHeight() const;
139 virtual GLenum getInternalFormat() const;
140 virtual GLenum getActualFormat() const;
141 virtual GLsizei getSamples() const;
143 virtual unsigned int getSerial() const;
145 static unsigned int issueSerial();
146 static unsigned int issueCubeSerials();
148 protected:
149 GLsizei mWidth;
150 GLsizei mHeight;
151 GLenum mInternalFormat;
152 GLenum mActualFormat;
153 GLsizei mSamples;
155 private:
156 DISALLOW_COPY_AND_ASSIGN(RenderbufferStorage);
158 const unsigned int mSerial;
160 static unsigned int mCurrentSerial;
161 };
163 // Renderbuffer implements the GL renderbuffer object.
164 // It's only a proxy for a RenderbufferInterface instance; the internal object
165 // can change whenever glRenderbufferStorage is called.
166 class Renderbuffer : public RefCountObject
167 {
168 public:
169 Renderbuffer(rx::Renderer *renderer, GLuint id, RenderbufferInterface *storage);
171 virtual ~Renderbuffer();
173 // These functions from RefCountObject are overloaded here because
174 // Textures need to maintain their own count of references to them via
175 // Renderbuffers/RenderbufferTextures. These functions invoke those
176 // reference counting functions on the RenderbufferInterface.
177 void addRef() const;
178 void release() const;
180 rx::RenderTarget *getRenderTarget();
181 rx::RenderTarget *getDepthStencil();
183 GLsizei getWidth() const;
184 GLsizei getHeight() const;
185 GLenum getInternalFormat() const;
186 GLenum getActualFormat() const;
187 GLuint getRedSize() const;
188 GLuint getGreenSize() const;
189 GLuint getBlueSize() const;
190 GLuint getAlphaSize() const;
191 GLuint getDepthSize() const;
192 GLuint getStencilSize() const;
193 GLsizei getSamples() const;
195 unsigned int getSerial() const;
197 void setStorage(RenderbufferStorage *newStorage);
199 private:
200 DISALLOW_COPY_AND_ASSIGN(Renderbuffer);
202 RenderbufferInterface *mInstance;
203 };
205 class Colorbuffer : public RenderbufferStorage
206 {
207 public:
208 Colorbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain);
209 Colorbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLenum format, GLsizei samples);
211 virtual ~Colorbuffer();
213 virtual rx::RenderTarget *getRenderTarget();
215 private:
216 DISALLOW_COPY_AND_ASSIGN(Colorbuffer);
218 rx::RenderTarget *mRenderTarget;
219 };
221 class DepthStencilbuffer : public RenderbufferStorage
222 {
223 public:
224 DepthStencilbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain);
225 DepthStencilbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples);
227 ~DepthStencilbuffer();
229 virtual rx::RenderTarget *getDepthStencil();
231 protected:
232 rx::RenderTarget *mDepthStencil;
234 private:
235 DISALLOW_COPY_AND_ASSIGN(DepthStencilbuffer);
236 };
238 class Depthbuffer : public DepthStencilbuffer
239 {
240 public:
241 Depthbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples);
243 virtual ~Depthbuffer();
245 private:
246 DISALLOW_COPY_AND_ASSIGN(Depthbuffer);
247 };
249 class Stencilbuffer : public DepthStencilbuffer
250 {
251 public:
252 Stencilbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples);
254 virtual ~Stencilbuffer();
256 private:
257 DISALLOW_COPY_AND_ASSIGN(Stencilbuffer);
258 };
259 }
261 #endif // LIBGLESV2_RENDERBUFFER_H_