diff options
author | Liang Qi <liang.qi@qt.io> | 2018-10-25 07:21:05 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-10-25 07:21:53 +0200 |
commit | e28e91ae99b8c3859899e04cc9370534c7c7b86d (patch) | |
tree | cca81b1e745be4f25aab78e8e917c2324594e539 /src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp | |
parent | 5ea233ca6782eb27adf596515cb66ef3dadc1d5e (diff) | |
parent | ebfad73b4e44fe6db8059200da105b4b87888718 (diff) | |
download | qtbase-e28e91ae99b8c3859899e04cc9370534c7c7b86d.tar.gz |
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
src/corelib/animation/qpropertyanimation.cpp
src/gui/image/qicon.cpp
tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
Change-Id: I3698172b7b44ebb487cb38f50fd2c4a9f8a35b21
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp')
-rw-r--r-- | src/3rdparty/angle/src/libANGLE/Renderbuffer.cpp | 147 |
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 |