diff options
Diffstat (limited to 'src/3rdparty/angle/src/libGLESv2/FramebufferAttachment.cpp')
-rw-r--r-- | src/3rdparty/angle/src/libGLESv2/FramebufferAttachment.cpp | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/FramebufferAttachment.cpp b/src/3rdparty/angle/src/libGLESv2/FramebufferAttachment.cpp new file mode 100644 index 0000000000..540ede1cd2 --- /dev/null +++ b/src/3rdparty/angle/src/libGLESv2/FramebufferAttachment.cpp @@ -0,0 +1,230 @@ +// +// Copyright (c) 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. +// + +// FramebufferAttachment.cpp: the gl::FramebufferAttachment class and its derived classes +// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108. + +#include "libGLESv2/FramebufferAttachment.h" +#include "libGLESv2/Texture.h" +#include "libGLESv2/formatutils.h" +#include "libGLESv2/Renderbuffer.h" +#include "libGLESv2/renderer/RenderTarget.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/renderer/d3d/TextureStorage.h" + +#include "common/utilities.h" + +namespace gl +{ + +////// FramebufferAttachment Implementation ////// + +FramebufferAttachment::FramebufferAttachment(GLenum binding) + : mBinding(binding) +{ +} + +FramebufferAttachment::~FramebufferAttachment() +{ +} + +GLuint FramebufferAttachment::getRedSize() const +{ + return (GetInternalFormatInfo(getInternalFormat()).redBits > 0) ? GetInternalFormatInfo(getActualFormat()).redBits : 0; +} + +GLuint FramebufferAttachment::getGreenSize() const +{ + return (GetInternalFormatInfo(getInternalFormat()).greenBits > 0) ? GetInternalFormatInfo(getActualFormat()).greenBits : 0; +} + +GLuint FramebufferAttachment::getBlueSize() const +{ + return (GetInternalFormatInfo(getInternalFormat()).blueBits > 0) ? GetInternalFormatInfo(getActualFormat()).blueBits : 0; +} + +GLuint FramebufferAttachment::getAlphaSize() const +{ + return (GetInternalFormatInfo(getInternalFormat()).alphaBits > 0) ? GetInternalFormatInfo(getActualFormat()).alphaBits : 0; +} + +GLuint FramebufferAttachment::getDepthSize() const +{ + return (GetInternalFormatInfo(getInternalFormat()).depthBits > 0) ? GetInternalFormatInfo(getActualFormat()).depthBits : 0; +} + +GLuint FramebufferAttachment::getStencilSize() const +{ + return (GetInternalFormatInfo(getInternalFormat()).stencilBits > 0) ? GetInternalFormatInfo(getActualFormat()).stencilBits : 0; +} + +GLenum FramebufferAttachment::getComponentType() const +{ + return GetInternalFormatInfo(getActualFormat()).componentType; +} + +GLenum FramebufferAttachment::getColorEncoding() const +{ + return GetInternalFormatInfo(getActualFormat()).colorEncoding; +} + +bool FramebufferAttachment::isTexture() const +{ + return (type() != GL_RENDERBUFFER); +} + +///// TextureAttachment Implementation //////// + +TextureAttachment::TextureAttachment(GLenum binding, Texture *texture, const ImageIndex &index) + : FramebufferAttachment(binding), + mIndex(index) +{ + mTexture.set(texture); +} + +TextureAttachment::~TextureAttachment() +{ + mTexture.set(NULL); +} + +GLsizei TextureAttachment::getSamples() const +{ + return 0; +} + +GLuint TextureAttachment::id() const +{ + return mTexture->id(); +} + +GLsizei TextureAttachment::getWidth() const +{ + return mTexture->getWidth(mIndex); +} + +GLsizei TextureAttachment::getHeight() const +{ + return mTexture->getHeight(mIndex); +} + +GLenum TextureAttachment::getInternalFormat() const +{ + return mTexture->getInternalFormat(mIndex); +} + +GLenum TextureAttachment::getActualFormat() const +{ + return mTexture->getActualFormat(mIndex); +} + +GLenum TextureAttachment::type() const +{ + return mIndex.type; +} + +GLint TextureAttachment::mipLevel() const +{ + return mIndex.mipIndex; +} + +GLint TextureAttachment::layer() const +{ + return mIndex.layerIndex; +} + +Texture *TextureAttachment::getTexture() +{ + return mTexture.get(); +} + +const ImageIndex *TextureAttachment::getTextureImageIndex() const +{ + return &mIndex; +} + +Renderbuffer *TextureAttachment::getRenderbuffer() +{ + UNREACHABLE(); + return NULL; +} + +////// RenderbufferAttachment Implementation ////// + +RenderbufferAttachment::RenderbufferAttachment(GLenum binding, Renderbuffer *renderbuffer) + : FramebufferAttachment(binding) +{ + ASSERT(renderbuffer); + mRenderbuffer.set(renderbuffer); +} + +RenderbufferAttachment::~RenderbufferAttachment() +{ + mRenderbuffer.set(NULL); +} + +GLsizei RenderbufferAttachment::getWidth() const +{ + return mRenderbuffer->getWidth(); +} + +GLsizei RenderbufferAttachment::getHeight() const +{ + return mRenderbuffer->getHeight(); +} + +GLenum RenderbufferAttachment::getInternalFormat() const +{ + return mRenderbuffer->getInternalFormat(); +} + +GLenum RenderbufferAttachment::getActualFormat() const +{ + return mRenderbuffer->getActualFormat(); +} + +GLsizei RenderbufferAttachment::getSamples() const +{ + return mRenderbuffer->getStorage()->getSamples(); +} + +GLuint RenderbufferAttachment::id() const +{ + return mRenderbuffer->id(); +} + +GLenum RenderbufferAttachment::type() const +{ + return GL_RENDERBUFFER; +} + +GLint RenderbufferAttachment::mipLevel() const +{ + return 0; +} + +GLint RenderbufferAttachment::layer() const +{ + return 0; +} + +Texture *RenderbufferAttachment::getTexture() +{ + UNREACHABLE(); + return NULL; +} + +const ImageIndex *RenderbufferAttachment::getTextureImageIndex() const +{ + UNREACHABLE(); + return NULL; +} + +Renderbuffer *RenderbufferAttachment::getRenderbuffer() +{ + return mRenderbuffer.get(); +} + +} |