summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp')
-rw-r--r--src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp b/src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp
new file mode 100644
index 0000000000..6a0cde812b
--- /dev/null
+++ b/src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp
@@ -0,0 +1,130 @@
+//
+// 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/Texture.h"
+#include "libANGLE/formatutils.h"
+#include "libANGLE/renderer/d3d/RenderTargetD3D.h"
+#include "libANGLE/renderer/RenderbufferImpl.h"
+
+namespace gl
+{
+Renderbuffer::Renderbuffer(rx::RenderbufferImpl *impl, GLuint id)
+ : RefCountObject(id),
+ mRenderbuffer(impl),
+ mWidth(0),
+ mHeight(0),
+ mInternalFormat(GL_RGBA4),
+ mSamples(0)
+{
+}
+
+Renderbuffer::~Renderbuffer()
+{
+ SafeDelete(mRenderbuffer);
+}
+
+Error Renderbuffer::setStorage(GLenum internalformat, size_t width, size_t height)
+{
+ Error error = mRenderbuffer->setStorage(internalformat, width, height);
+ if (error.isError())
+ {
+ return error;
+ }
+
+ mWidth = width;
+ mHeight = height;
+ mInternalFormat = internalformat;
+ mSamples = 0;
+
+ return Error(GL_NO_ERROR);
+}
+
+Error Renderbuffer::setStorageMultisample(size_t samples, GLenum internalformat, size_t width, size_t height)
+{
+ Error error = mRenderbuffer->setStorageMultisample(samples, internalformat, width, height);
+ if (error.isError())
+ {
+ return error;
+ }
+
+ mWidth = width;
+ mHeight = height;
+ mInternalFormat = internalformat;
+ mSamples = samples;
+
+ return Error(GL_NO_ERROR);
+}
+
+rx::RenderbufferImpl *Renderbuffer::getImplementation()
+{
+ ASSERT(mRenderbuffer);
+ return mRenderbuffer;
+}
+
+const rx::RenderbufferImpl *Renderbuffer::getImplementation() const
+{
+ return mRenderbuffer;
+}
+
+GLsizei Renderbuffer::getWidth() const
+{
+ return mWidth;
+}
+
+GLsizei Renderbuffer::getHeight() const
+{
+ return mHeight;
+}
+
+GLenum Renderbuffer::getInternalFormat() const
+{
+ return mInternalFormat;
+}
+
+GLsizei Renderbuffer::getSamples() const
+{
+ return mSamples;
+}
+
+GLuint Renderbuffer::getRedSize() const
+{
+ return GetInternalFormatInfo(mInternalFormat).redBits;
+}
+
+GLuint Renderbuffer::getGreenSize() const
+{
+ return GetInternalFormatInfo(mInternalFormat).greenBits;
+}
+
+GLuint Renderbuffer::getBlueSize() const
+{
+ return GetInternalFormatInfo(mInternalFormat).blueBits;
+}
+
+GLuint Renderbuffer::getAlphaSize() const
+{
+ return GetInternalFormatInfo(mInternalFormat).alphaBits;
+}
+
+GLuint Renderbuffer::getDepthSize() const
+{
+ return GetInternalFormatInfo(mInternalFormat).depthBits;
+}
+
+GLuint Renderbuffer::getStencilSize() const
+{
+ return GetInternalFormatInfo(mInternalFormat).stencilBits;
+}
+
+}