gfx/angle/src/libGLESv2/Renderbuffer.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) 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_

mercurial