summaryrefslogtreecommitdiffstats
path: root/gfx/angle/checkout/src/libANGLE/renderer/RenderbufferImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/checkout/src/libANGLE/renderer/RenderbufferImpl.h')
-rw-r--r--gfx/angle/checkout/src/libANGLE/renderer/RenderbufferImpl.h162
1 files changed, 162 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/libANGLE/renderer/RenderbufferImpl.h b/gfx/angle/checkout/src/libANGLE/renderer/RenderbufferImpl.h
new file mode 100644
index 0000000000..878f03bdf2
--- /dev/null
+++ b/gfx/angle/checkout/src/libANGLE/renderer/RenderbufferImpl.h
@@ -0,0 +1,162 @@
+//
+// Copyright 2014 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// RenderbufferImpl.h: Defines the abstract class gl::RenderbufferImpl
+
+#ifndef LIBANGLE_RENDERER_RENDERBUFFERIMPL_H_
+#define LIBANGLE_RENDERER_RENDERBUFFERIMPL_H_
+
+#include "angle_gl.h"
+#include "common/angleutils.h"
+#include "libANGLE/Error.h"
+#include "libANGLE/angletypes.h"
+#include "libANGLE/renderer/FramebufferAttachmentObjectImpl.h"
+
+namespace gl
+{
+struct PixelPackState;
+class RenderbufferState;
+} // namespace gl
+
+namespace egl
+{
+class Image;
+} // namespace egl
+
+namespace rx
+{
+
+class RenderbufferImpl : public FramebufferAttachmentObjectImpl
+{
+ public:
+ RenderbufferImpl(const gl::RenderbufferState &state) : mState(state) {}
+ ~RenderbufferImpl() override {}
+ virtual void onDestroy(const gl::Context *context) {}
+
+ virtual angle::Result setStorage(const gl::Context *context,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height) = 0;
+ virtual angle::Result setStorageMultisample(const gl::Context *context,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ gl::MultisamplingMode mode) = 0;
+ virtual angle::Result setStorageEGLImageTarget(const gl::Context *context,
+ egl::Image *image) = 0;
+
+ virtual angle::Result copyRenderbufferSubData(const gl::Context *context,
+ const gl::Renderbuffer *srcBuffer,
+ GLint srcLevel,
+ GLint srcX,
+ GLint srcY,
+ GLint srcZ,
+ GLint dstLevel,
+ GLint dstX,
+ GLint dstY,
+ GLint dstZ,
+ GLsizei srcWidth,
+ GLsizei srcHeight,
+ GLsizei srcDepth);
+
+ virtual angle::Result copyTextureSubData(const gl::Context *context,
+ const gl::Texture *srcTexture,
+ GLint srcLevel,
+ GLint srcX,
+ GLint srcY,
+ GLint srcZ,
+ GLint dstLevel,
+ GLint dstX,
+ GLint dstY,
+ GLint dstZ,
+ GLsizei srcWidth,
+ GLsizei srcHeight,
+ GLsizei srcDepth);
+
+ virtual GLenum getColorReadFormat(const gl::Context *context);
+ virtual GLenum getColorReadType(const gl::Context *context);
+
+ virtual angle::Result getRenderbufferImage(const gl::Context *context,
+ const gl::PixelPackState &packState,
+ gl::Buffer *packBuffer,
+ GLenum format,
+ GLenum type,
+ void *pixels);
+
+ // Override if accurate native memory size information is available
+ virtual GLint getMemorySize() const;
+
+ protected:
+ const gl::RenderbufferState &mState;
+};
+
+inline angle::Result RenderbufferImpl::copyRenderbufferSubData(const gl::Context *context,
+ const gl::Renderbuffer *srcBuffer,
+ GLint srcLevel,
+ GLint srcX,
+ GLint srcY,
+ GLint srcZ,
+ GLint dstLevel,
+ GLint dstX,
+ GLint dstY,
+ GLint dstZ,
+ GLsizei srcWidth,
+ GLsizei srcHeight,
+ GLsizei srcDepth)
+{
+ UNREACHABLE();
+ return angle::Result::Stop;
+}
+
+inline angle::Result RenderbufferImpl::copyTextureSubData(const gl::Context *context,
+ const gl::Texture *srcTexture,
+ GLint srcLevel,
+ GLint srcX,
+ GLint srcY,
+ GLint srcZ,
+ GLint dstLevel,
+ GLint dstX,
+ GLint dstY,
+ GLint dstZ,
+ GLsizei srcWidth,
+ GLsizei srcHeight,
+ GLsizei srcDepth)
+{
+ UNREACHABLE();
+ return angle::Result::Stop;
+}
+
+inline GLint RenderbufferImpl::getMemorySize() const
+{
+ return 0;
+}
+
+inline GLenum RenderbufferImpl::getColorReadFormat(const gl::Context *context)
+{
+ UNREACHABLE();
+ return GL_NONE;
+}
+
+inline GLenum RenderbufferImpl::getColorReadType(const gl::Context *context)
+{
+ UNREACHABLE();
+ return GL_NONE;
+}
+
+inline angle::Result RenderbufferImpl::getRenderbufferImage(const gl::Context *context,
+ const gl::PixelPackState &packState,
+ gl::Buffer *packBuffer,
+ GLenum format,
+ GLenum type,
+ void *pixels)
+{
+ UNREACHABLE();
+ return angle::Result::Stop;
+}
+} // namespace rx
+
+#endif // LIBANGLE_RENDERER_RENDERBUFFERIMPL_H_