tor-browser

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

RenderbufferImpl.h (7280B)


      1 //
      2 // Copyright 2014 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 // RenderbufferImpl.h: Defines the abstract class gl::RenderbufferImpl
      8 
      9 #ifndef LIBANGLE_RENDERER_RENDERBUFFERIMPL_H_
     10 #define LIBANGLE_RENDERER_RENDERBUFFERIMPL_H_
     11 
     12 #include "angle_gl.h"
     13 #include "common/angleutils.h"
     14 #include "libANGLE/Error.h"
     15 #include "libANGLE/angletypes.h"
     16 #include "libANGLE/renderer/FramebufferAttachmentObjectImpl.h"
     17 
     18 namespace gl
     19 {
     20 struct PixelPackState;
     21 class RenderbufferState;
     22 }  // namespace gl
     23 
     24 namespace egl
     25 {
     26 class Image;
     27 }  // namespace egl
     28 
     29 namespace rx
     30 {
     31 
     32 class RenderbufferImpl : public FramebufferAttachmentObjectImpl
     33 {
     34  public:
     35    RenderbufferImpl(const gl::RenderbufferState &state) : mState(state) {}
     36    ~RenderbufferImpl() override {}
     37    virtual void onDestroy(const gl::Context *context) {}
     38 
     39    virtual angle::Result setStorage(const gl::Context *context,
     40                                     GLenum internalformat,
     41                                     GLsizei width,
     42                                     GLsizei height)                        = 0;
     43    virtual angle::Result setStorageMultisample(const gl::Context *context,
     44                                                GLsizei samples,
     45                                                GLenum internalformat,
     46                                                GLsizei width,
     47                                                GLsizei height,
     48                                                gl::MultisamplingMode mode) = 0;
     49    virtual angle::Result setStorageEGLImageTarget(const gl::Context *context,
     50                                                   egl::Image *image)       = 0;
     51 
     52    virtual angle::Result copyRenderbufferSubData(const gl::Context *context,
     53                                                  const gl::Renderbuffer *srcBuffer,
     54                                                  GLint srcLevel,
     55                                                  GLint srcX,
     56                                                  GLint srcY,
     57                                                  GLint srcZ,
     58                                                  GLint dstLevel,
     59                                                  GLint dstX,
     60                                                  GLint dstY,
     61                                                  GLint dstZ,
     62                                                  GLsizei srcWidth,
     63                                                  GLsizei srcHeight,
     64                                                  GLsizei srcDepth);
     65 
     66    virtual angle::Result copyTextureSubData(const gl::Context *context,
     67                                             const gl::Texture *srcTexture,
     68                                             GLint srcLevel,
     69                                             GLint srcX,
     70                                             GLint srcY,
     71                                             GLint srcZ,
     72                                             GLint dstLevel,
     73                                             GLint dstX,
     74                                             GLint dstY,
     75                                             GLint dstZ,
     76                                             GLsizei srcWidth,
     77                                             GLsizei srcHeight,
     78                                             GLsizei srcDepth);
     79 
     80    virtual GLenum getColorReadFormat(const gl::Context *context);
     81    virtual GLenum getColorReadType(const gl::Context *context);
     82 
     83    virtual angle::Result getRenderbufferImage(const gl::Context *context,
     84                                               const gl::PixelPackState &packState,
     85                                               gl::Buffer *packBuffer,
     86                                               GLenum format,
     87                                               GLenum type,
     88                                               void *pixels);
     89 
     90    // Override if accurate native memory size information is available
     91    virtual GLint getMemorySize() const;
     92 
     93    virtual angle::Result onLabelUpdate(const gl::Context *context);
     94 
     95  protected:
     96    const gl::RenderbufferState &mState;
     97 };
     98 
     99 inline angle::Result RenderbufferImpl::copyRenderbufferSubData(const gl::Context *context,
    100                                                               const gl::Renderbuffer *srcBuffer,
    101                                                               GLint srcLevel,
    102                                                               GLint srcX,
    103                                                               GLint srcY,
    104                                                               GLint srcZ,
    105                                                               GLint dstLevel,
    106                                                               GLint dstX,
    107                                                               GLint dstY,
    108                                                               GLint dstZ,
    109                                                               GLsizei srcWidth,
    110                                                               GLsizei srcHeight,
    111                                                               GLsizei srcDepth)
    112 {
    113    UNREACHABLE();
    114    return angle::Result::Stop;
    115 }
    116 
    117 inline angle::Result RenderbufferImpl::copyTextureSubData(const gl::Context *context,
    118                                                          const gl::Texture *srcTexture,
    119                                                          GLint srcLevel,
    120                                                          GLint srcX,
    121                                                          GLint srcY,
    122                                                          GLint srcZ,
    123                                                          GLint dstLevel,
    124                                                          GLint dstX,
    125                                                          GLint dstY,
    126                                                          GLint dstZ,
    127                                                          GLsizei srcWidth,
    128                                                          GLsizei srcHeight,
    129                                                          GLsizei srcDepth)
    130 {
    131    UNREACHABLE();
    132    return angle::Result::Stop;
    133 }
    134 
    135 inline GLint RenderbufferImpl::getMemorySize() const
    136 {
    137    return 0;
    138 }
    139 
    140 inline GLenum RenderbufferImpl::getColorReadFormat(const gl::Context *context)
    141 {
    142    UNREACHABLE();
    143    return GL_NONE;
    144 }
    145 
    146 inline GLenum RenderbufferImpl::getColorReadType(const gl::Context *context)
    147 {
    148    UNREACHABLE();
    149    return GL_NONE;
    150 }
    151 
    152 inline angle::Result RenderbufferImpl::getRenderbufferImage(const gl::Context *context,
    153                                                            const gl::PixelPackState &packState,
    154                                                            gl::Buffer *packBuffer,
    155                                                            GLenum format,
    156                                                            GLenum type,
    157                                                            void *pixels)
    158 {
    159    UNREACHABLE();
    160    return angle::Result::Stop;
    161 }
    162 }  // namespace rx
    163 
    164 #endif  // LIBANGLE_RENDERER_RENDERBUFFERIMPL_H_