diff options
Diffstat (limited to 'gfx/angle/src/libANGLE/Renderbuffer.h')
-rwxr-xr-x | gfx/angle/src/libANGLE/Renderbuffer.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/gfx/angle/src/libANGLE/Renderbuffer.h b/gfx/angle/src/libANGLE/Renderbuffer.h new file mode 100755 index 000000000..57cc08279 --- /dev/null +++ b/gfx/angle/src/libANGLE/Renderbuffer.h @@ -0,0 +1,86 @@ +// +// Copyright (c) 2002-2010 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. +// + +// Renderbuffer.h: Defines the renderer-agnostic container class gl::Renderbuffer. +// Implements GL renderbuffer objects and related functionality. +// [OpenGL ES 2.0.24] section 4.4.3 page 108. + +#ifndef LIBANGLE_RENDERBUFFER_H_ +#define LIBANGLE_RENDERBUFFER_H_ + +#include "angle_gl.h" +#include "common/angleutils.h" +#include "libANGLE/Debug.h" +#include "libANGLE/Error.h" +#include "libANGLE/FramebufferAttachment.h" +#include "libANGLE/Image.h" +#include "libANGLE/formatutils.h" +#include "libANGLE/renderer/RenderbufferImpl.h" + +namespace gl +{ +// A GL renderbuffer object is usually used as a depth or stencil buffer attachment +// for a framebuffer object. The renderbuffer itself is a distinct GL object, see +// FramebufferAttachment and Framebuffer for how they are applied to an FBO via an +// attachment point. + +class Renderbuffer final : public egl::ImageSibling, + public gl::FramebufferAttachmentObject, + public LabeledObject +{ + public: + Renderbuffer(rx::RenderbufferImpl *impl, GLuint id); + virtual ~Renderbuffer(); + + void setLabel(const std::string &label) override; + const std::string &getLabel() const override; + + Error setStorage(GLenum internalformat, size_t width, size_t height); + Error setStorageMultisample(size_t samples, GLenum internalformat, size_t width, size_t height); + Error setStorageEGLImageTarget(egl::Image *imageTarget); + + rx::RenderbufferImpl *getImplementation() const; + + GLsizei getWidth() const; + GLsizei getHeight() const; + const Format &getFormat() const; + GLsizei getSamples() const; + GLuint getRedSize() const; + GLuint getGreenSize() const; + GLuint getBlueSize() const; + GLuint getAlphaSize() const; + GLuint getDepthSize() const; + GLuint getStencilSize() const; + + // FramebufferAttachmentObject Impl + Extents getAttachmentSize(const FramebufferAttachment::Target &target) const override; + const Format &getAttachmentFormat( + const FramebufferAttachment::Target & /*target*/) const override + { + return getFormat(); + } + GLsizei getAttachmentSamples(const FramebufferAttachment::Target &/*target*/) const override { return getSamples(); } + + void onAttach() override; + void onDetach() override; + GLuint getId() const override; + + private: + rx::FramebufferAttachmentObjectImpl *getAttachmentImpl() const override { return mRenderbuffer; } + + rx::RenderbufferImpl *mRenderbuffer; + + std::string mLabel; + + GLsizei mWidth; + GLsizei mHeight; + Format mFormat; + GLsizei mSamples; +}; + +} + +#endif // LIBANGLE_RENDERBUFFER_H_ |