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_