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.cpp147
1 files changed, 99 insertions, 48 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp b/src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp
index 161fbea797..8310f1abda 100644
--- a/src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp
+++ b/src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp
@@ -25,11 +25,24 @@ Renderbuffer::Renderbuffer(rx::RenderbufferImpl *impl, GLuint id)
mLabel(),
mWidth(0),
mHeight(0),
- mInternalFormat(GL_RGBA4),
- mSamples(0)
+ mFormat(GL_RGBA4),
+ mSamples(0),
+ mInitState(InitState::MayNeedInit)
{
}
+Error Renderbuffer::onDestroy(const Context *context)
+{
+ ANGLE_TRY(orphanImages(context));
+
+ if (mRenderbuffer)
+ {
+ ANGLE_TRY(mRenderbuffer->onDestroy(context));
+ }
+
+ return NoError();
+}
+
Renderbuffer::~Renderbuffer()
{
SafeDelete(mRenderbuffer);
@@ -45,70 +58,70 @@ const std::string &Renderbuffer::getLabel() const
return mLabel;
}
-Error Renderbuffer::setStorage(GLenum internalformat, size_t width, size_t height)
+Error Renderbuffer::setStorage(const Context *context,
+ GLenum internalformat,
+ size_t width,
+ size_t height)
{
- orphanImages();
+ ANGLE_TRY(orphanImages(context));
- Error error = mRenderbuffer->setStorage(internalformat, width, height);
- if (error.isError())
- {
- return error;
- }
+ ANGLE_TRY(mRenderbuffer->setStorage(context, internalformat, width, height));
mWidth = static_cast<GLsizei>(width);
mHeight = static_cast<GLsizei>(height);
- mInternalFormat = internalformat;
+ mFormat = Format(internalformat);
mSamples = 0;
- return Error(GL_NO_ERROR);
+ mInitState = InitState::MayNeedInit;
+ mDirtyChannel.signal(mInitState);
+
+ return NoError();
}
-Error Renderbuffer::setStorageMultisample(size_t samples, GLenum internalformat, size_t width, size_t height)
+Error Renderbuffer::setStorageMultisample(const Context *context,
+ size_t samples,
+ GLenum internalformat,
+ size_t width,
+ size_t height)
{
- orphanImages();
+ ANGLE_TRY(orphanImages(context));
- Error error = mRenderbuffer->setStorageMultisample(samples, internalformat, width, height);
- if (error.isError())
- {
- return error;
- }
+ ANGLE_TRY(
+ mRenderbuffer->setStorageMultisample(context, samples, internalformat, width, height));
mWidth = static_cast<GLsizei>(width);
mHeight = static_cast<GLsizei>(height);
- mInternalFormat = internalformat;
+ mFormat = Format(internalformat);
mSamples = static_cast<GLsizei>(samples);
- return Error(GL_NO_ERROR);
+ mInitState = InitState::MayNeedInit;
+ mDirtyChannel.signal(mInitState);
+
+ return NoError();
}
-Error Renderbuffer::setStorageEGLImageTarget(egl::Image *image)
+Error Renderbuffer::setStorageEGLImageTarget(const Context *context, egl::Image *image)
{
- orphanImages();
+ ANGLE_TRY(orphanImages(context));
- Error error = mRenderbuffer->setStorageEGLImageTarget(image);
- if (error.isError())
- {
- return error;
- }
+ ANGLE_TRY(mRenderbuffer->setStorageEGLImageTarget(context, image));
- setTargetImage(image);
+ setTargetImage(context, image);
mWidth = static_cast<GLsizei>(image->getWidth());
mHeight = static_cast<GLsizei>(image->getHeight());
- mInternalFormat = image->getInternalFormat();
+ mFormat = Format(image->getFormat());
mSamples = 0;
- return Error(GL_NO_ERROR);
-}
+ mInitState = image->sourceInitState();
+ mDirtyChannel.signal(mInitState);
-rx::RenderbufferImpl *Renderbuffer::getImplementation()
-{
- ASSERT(mRenderbuffer);
- return mRenderbuffer;
+ return NoError();
}
-const rx::RenderbufferImpl *Renderbuffer::getImplementation() const
+rx::RenderbufferImpl *Renderbuffer::getImplementation() const
{
+ ASSERT(mRenderbuffer);
return mRenderbuffer;
}
@@ -122,9 +135,9 @@ GLsizei Renderbuffer::getHeight() const
return mHeight;
}
-GLenum Renderbuffer::getInternalFormat() const
+const Format &Renderbuffer::getFormat() const
{
- return mInternalFormat;
+ return mFormat;
}
GLsizei Renderbuffer::getSamples() const
@@ -134,42 +147,42 @@ GLsizei Renderbuffer::getSamples() const
GLuint Renderbuffer::getRedSize() const
{
- return GetInternalFormatInfo(mInternalFormat).redBits;
+ return mFormat.info->redBits;
}
GLuint Renderbuffer::getGreenSize() const
{
- return GetInternalFormatInfo(mInternalFormat).greenBits;
+ return mFormat.info->greenBits;
}
GLuint Renderbuffer::getBlueSize() const
{
- return GetInternalFormatInfo(mInternalFormat).blueBits;
+ return mFormat.info->blueBits;
}
GLuint Renderbuffer::getAlphaSize() const
{
- return GetInternalFormatInfo(mInternalFormat).alphaBits;
+ return mFormat.info->alphaBits;
}
GLuint Renderbuffer::getDepthSize() const
{
- return GetInternalFormatInfo(mInternalFormat).depthBits;
+ return mFormat.info->depthBits;
}
GLuint Renderbuffer::getStencilSize() const
{
- return GetInternalFormatInfo(mInternalFormat).stencilBits;
+ return mFormat.info->stencilBits;
}
-void Renderbuffer::onAttach()
+void Renderbuffer::onAttach(const Context *context)
{
addRef();
}
-void Renderbuffer::onDetach()
+void Renderbuffer::onDetach(const Context *context)
{
- release();
+ release(context);
}
GLuint Renderbuffer::getId() const
@@ -177,8 +190,46 @@ GLuint Renderbuffer::getId() const
return id();
}
-Extents Renderbuffer::getAttachmentSize(const FramebufferAttachment::Target & /*target*/) const
+Extents Renderbuffer::getAttachmentSize(const gl::ImageIndex & /*imageIndex*/) const
{
return Extents(mWidth, mHeight, 1);
}
+
+const Format &Renderbuffer::getAttachmentFormat(GLenum /*binding*/,
+ const ImageIndex & /*imageIndex*/) const
+{
+ return getFormat();
+}
+GLsizei Renderbuffer::getAttachmentSamples(const ImageIndex & /*imageIndex*/) const
+{
+ return getSamples();
}
+
+InitState Renderbuffer::initState(const gl::ImageIndex & /*imageIndex*/) const
+{
+ if (isEGLImageTarget())
+ {
+ return sourceEGLImageInitState();
+ }
+
+ return mInitState;
+}
+
+void Renderbuffer::setInitState(const gl::ImageIndex & /*imageIndex*/, InitState initState)
+{
+ if (isEGLImageTarget())
+ {
+ setSourceEGLImageInitState(initState);
+ }
+ else
+ {
+ mInitState = initState;
+ }
+}
+
+rx::FramebufferAttachmentObjectImpl *Renderbuffer::getAttachmentImpl() const
+{
+ return mRenderbuffer;
+}
+
+} // namespace gl