diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /gfx/angle/src/libANGLE/Renderbuffer.cpp | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'gfx/angle/src/libANGLE/Renderbuffer.cpp')
-rwxr-xr-x | gfx/angle/src/libANGLE/Renderbuffer.cpp | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/gfx/angle/src/libANGLE/Renderbuffer.cpp b/gfx/angle/src/libANGLE/Renderbuffer.cpp new file mode 100755 index 000000000..7b30a46be --- /dev/null +++ b/gfx/angle/src/libANGLE/Renderbuffer.cpp @@ -0,0 +1,173 @@ +// +// Copyright (c) 2002-2012 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.cpp: Implements the renderer-agnostic gl::Renderbuffer class, +// GL renderbuffer objects and related functionality. +// [OpenGL ES 2.0.24] section 4.4.3 page 108. + +#include "libANGLE/Renderbuffer.h" + +#include "common/utilities.h" +#include "libANGLE/FramebufferAttachment.h" +#include "libANGLE/Image.h" +#include "libANGLE/Texture.h" +#include "libANGLE/formatutils.h" +#include "libANGLE/renderer/d3d/RenderTargetD3D.h" + +namespace gl +{ +Renderbuffer::Renderbuffer(rx::RenderbufferImpl *impl, GLuint id) + : egl::ImageSibling(id), + mRenderbuffer(impl), + mLabel(), + mWidth(0), + mHeight(0), + mFormat(GL_RGBA4), + mSamples(0) +{ +} + +Renderbuffer::~Renderbuffer() +{ + SafeDelete(mRenderbuffer); +} + +void Renderbuffer::setLabel(const std::string &label) +{ + mLabel = label; +} + +const std::string &Renderbuffer::getLabel() const +{ + return mLabel; +} + +Error Renderbuffer::setStorage(GLenum internalformat, size_t width, size_t height) +{ + orphanImages(); + + ANGLE_TRY(mRenderbuffer->setStorage(internalformat, width, height)); + + mWidth = static_cast<GLsizei>(width); + mHeight = static_cast<GLsizei>(height); + mFormat = Format(internalformat); + mSamples = 0; + + mDirtyChannel.signal(); + + return NoError(); +} + +Error Renderbuffer::setStorageMultisample(size_t samples, GLenum internalformat, size_t width, size_t height) +{ + orphanImages(); + + ANGLE_TRY(mRenderbuffer->setStorageMultisample(samples, internalformat, width, height)); + + mWidth = static_cast<GLsizei>(width); + mHeight = static_cast<GLsizei>(height); + mFormat = Format(internalformat); + mSamples = static_cast<GLsizei>(samples); + + mDirtyChannel.signal(); + + return NoError(); +} + +Error Renderbuffer::setStorageEGLImageTarget(egl::Image *image) +{ + orphanImages(); + + ANGLE_TRY(mRenderbuffer->setStorageEGLImageTarget(image)); + + setTargetImage(image); + + mWidth = static_cast<GLsizei>(image->getWidth()); + mHeight = static_cast<GLsizei>(image->getHeight()); + mFormat = Format(image->getFormat()); + mSamples = 0; + + mDirtyChannel.signal(); + + return NoError(); +} + +rx::RenderbufferImpl *Renderbuffer::getImplementation() const +{ + ASSERT(mRenderbuffer); + return mRenderbuffer; +} + +GLsizei Renderbuffer::getWidth() const +{ + return mWidth; +} + +GLsizei Renderbuffer::getHeight() const +{ + return mHeight; +} + +const Format &Renderbuffer::getFormat() const +{ + return mFormat; +} + +GLsizei Renderbuffer::getSamples() const +{ + return mSamples; +} + +GLuint Renderbuffer::getRedSize() const +{ + return mFormat.info->redBits; +} + +GLuint Renderbuffer::getGreenSize() const +{ + return mFormat.info->greenBits; +} + +GLuint Renderbuffer::getBlueSize() const +{ + return mFormat.info->blueBits; +} + +GLuint Renderbuffer::getAlphaSize() const +{ + return mFormat.info->alphaBits; +} + +GLuint Renderbuffer::getDepthSize() const +{ + return mFormat.info->depthBits; +} + +GLuint Renderbuffer::getStencilSize() const +{ + return mFormat.info->stencilBits; +} + +void Renderbuffer::onAttach() +{ + addRef(); +} + +void Renderbuffer::onDetach() +{ + release(); +} + +GLuint Renderbuffer::getId() const +{ + return id(); +} + +Extents Renderbuffer::getAttachmentSize(const FramebufferAttachment::Target & /*target*/) const +{ + return Extents(mWidth, mHeight, 1); +} +} // namespace gl |