blob: 252357d563c47dda7d2c3f4fd6db149a63a76b51 [file] [log] [blame]
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +00001//
daniel@transgaming.combdfb3912012-10-31 19:55:21 +00002// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +00003// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
Shannon Woodse2632d22014-10-17 13:08:51 -04007// Renderbuffer.cpp: Implements the renderer-agnostic gl::Renderbuffer class,
8// GL renderbuffer objects and related functionality.
9// [OpenGL ES 2.0.24] section 4.4.3 page 108.
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000010
Geoff Lang2b5420c2014-11-19 14:20:15 -050011#include "libANGLE/Renderbuffer.h"
Geoff Lang0b7eef72014-06-12 14:10:47 -040012
13#include "common/utilities.h"
Jamie Madilld98bbc32014-12-03 11:36:42 -050014#include "libANGLE/FramebufferAttachment.h"
15#include "libANGLE/Texture.h"
16#include "libANGLE/formatutils.h"
Geoff Langc2e75af2015-01-05 14:26:24 -050017#include "libANGLE/renderer/d3d/RenderTargetD3D.h"
Jamie Madilld98bbc32014-12-03 11:36:42 -050018#include "libANGLE/renderer/RenderbufferImpl.h"
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000019
20namespace gl
21{
Shannon Woodse2632d22014-10-17 13:08:51 -040022Renderbuffer::Renderbuffer(rx::RenderbufferImpl *impl, GLuint id)
Shannon Woodsf108df22014-10-30 18:53:29 +000023 : RefCountObject(id),
Geoff Lang6a1e6b92014-11-06 10:42:45 -050024 mRenderbuffer(impl),
25 mWidth(0),
26 mHeight(0),
27 mInternalFormat(GL_RGBA4),
Geoff Lang6a1e6b92014-11-06 10:42:45 -050028 mSamples(0)
Shannon Woodsf108df22014-10-30 18:53:29 +000029{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040030}
31
Cooper Partin75c42f42014-08-11 10:16:44 -070032Renderbuffer::~Renderbuffer()
33{
Shannon Woodse2632d22014-10-17 13:08:51 -040034 SafeDelete(mRenderbuffer);
Cooper Partin75c42f42014-08-11 10:16:44 -070035}
36
Geoff Langbafefdf2014-10-10 14:26:35 -040037Error Renderbuffer::setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples)
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040038{
Geoff Langbafefdf2014-10-10 14:26:35 -040039 Error error = mRenderbuffer->setStorage(width, height, internalformat, samples);
40 if (error.isError())
41 {
42 return error;
43 }
44
Shannon Woodse2632d22014-10-17 13:08:51 -040045 mWidth = width;
46 mHeight = height;
47 mInternalFormat = internalformat;
48 mSamples = samples;
Geoff Langbafefdf2014-10-10 14:26:35 -040049
50 return Error(GL_NO_ERROR);
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040051}
52
Shannon Woodse2632d22014-10-17 13:08:51 -040053rx::RenderbufferImpl *Renderbuffer::getImplementation()
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040054{
Shannon Woodse2632d22014-10-17 13:08:51 -040055 ASSERT(mRenderbuffer);
56 return mRenderbuffer;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040057}
58
59GLsizei Renderbuffer::getWidth() const
60{
Shannon Woodse2632d22014-10-17 13:08:51 -040061 return mWidth;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040062}
63
64GLsizei Renderbuffer::getHeight() const
65{
Shannon Woodse2632d22014-10-17 13:08:51 -040066 return mHeight;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040067}
68
69GLenum Renderbuffer::getInternalFormat() const
70{
Shannon Woodse2632d22014-10-17 13:08:51 -040071 return mInternalFormat;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040072}
73
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040074GLsizei Renderbuffer::getSamples() const
75{
Shannon Woodse2632d22014-10-17 13:08:51 -040076 return mSamples;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040077}
78
79GLuint Renderbuffer::getRedSize() const
80{
Geoff Langd8a22582014-12-17 15:28:23 -050081 return GetInternalFormatInfo(mInternalFormat).redBits;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040082}
83
84GLuint Renderbuffer::getGreenSize() const
85{
Geoff Langd8a22582014-12-17 15:28:23 -050086 return GetInternalFormatInfo(mInternalFormat).greenBits;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040087}
88
89GLuint Renderbuffer::getBlueSize() const
90{
Geoff Langd8a22582014-12-17 15:28:23 -050091 return GetInternalFormatInfo(mInternalFormat).blueBits;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040092}
93
94GLuint Renderbuffer::getAlphaSize() const
95{
Geoff Langd8a22582014-12-17 15:28:23 -050096 return GetInternalFormatInfo(mInternalFormat).alphaBits;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040097}
98
99GLuint Renderbuffer::getDepthSize() const
100{
Geoff Langd8a22582014-12-17 15:28:23 -0500101 return GetInternalFormatInfo(mInternalFormat).depthBits;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400102}
103
104GLuint Renderbuffer::getStencilSize() const
105{
Geoff Langd8a22582014-12-17 15:28:23 -0500106 return GetInternalFormatInfo(mInternalFormat).stencilBits;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400107}
108
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000109}