diff options
author | egdaniel <egdaniel@google.com> | 2015-09-15 08:46:13 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-15 08:46:14 -0700 |
commit | 79bd2aee8ca328b688c8d421973f96bcd13fd12d (patch) | |
tree | cb96a225abbabd712921117c47b148d7608f8309 /src/gpu | |
parent | f5d1b2de031b4ae2130280dd09eadcccb001ba11 (diff) |
Minor fix to attaching stencils
BUG=skia:
Review URL: https://codereview.chromium.org/1344033002
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/GrRenderTarget.cpp | 5 | ||||
-rw-r--r-- | src/gpu/gl/GrGLRenderTarget.cpp | 20 |
2 files changed, 14 insertions, 11 deletions
diff --git a/src/gpu/GrRenderTarget.cpp b/src/gpu/GrRenderTarget.cpp index c16738e795..4bb01432ce 100644 --- a/src/gpu/GrRenderTarget.cpp +++ b/src/gpu/GrRenderTarget.cpp @@ -69,6 +69,11 @@ void GrRenderTarget::onAbandon() { /////////////////////////////////////////////////////////////////////////////// bool GrRenderTargetPriv::attachStencilAttachment(GrStencilAttachment* stencil) { + if (!stencil && !fRenderTarget->fStencilAttachment) { + // No need to do any work since we currently don't have a stencil attachment and + // we're not acctually adding one. + return true; + } fRenderTarget->fStencilAttachment = stencil; if (!fRenderTarget->completeStencilAttachment()) { SkSafeSetNull(fRenderTarget->fStencilAttachment); diff --git a/src/gpu/gl/GrGLRenderTarget.cpp b/src/gpu/gl/GrGLRenderTarget.cpp index dfb4e88ee3..e5210fa78c 100644 --- a/src/gpu/gl/GrGLRenderTarget.cpp +++ b/src/gpu/gl/GrGLRenderTarget.cpp @@ -89,19 +89,17 @@ bool GrGLRenderTarget::completeStencilAttachment() { const GrGLInterface* interface = gpu->glInterface(); GrStencilAttachment* stencil = this->renderTargetPriv().getStencilAttachment(); if (nullptr == stencil) { - if (this->renderTargetPriv().getStencilAttachment()) { - GR_GL_CALL(interface, FramebufferRenderbuffer(GR_GL_FRAMEBUFFER, - GR_GL_STENCIL_ATTACHMENT, - GR_GL_RENDERBUFFER, 0)); - GR_GL_CALL(interface, FramebufferRenderbuffer(GR_GL_FRAMEBUFFER, - GR_GL_DEPTH_ATTACHMENT, - GR_GL_RENDERBUFFER, 0)); + GR_GL_CALL(interface, FramebufferRenderbuffer(GR_GL_FRAMEBUFFER, + GR_GL_STENCIL_ATTACHMENT, + GR_GL_RENDERBUFFER, 0)); + GR_GL_CALL(interface, FramebufferRenderbuffer(GR_GL_FRAMEBUFFER, + GR_GL_DEPTH_ATTACHMENT, + GR_GL_RENDERBUFFER, 0)); #ifdef SK_DEBUG - GrGLenum status; - GR_GL_CALL_RET(interface, status, CheckFramebufferStatus(GR_GL_FRAMEBUFFER)); - SkASSERT(GR_GL_FRAMEBUFFER_COMPLETE == status); + GrGLenum status; + GR_GL_CALL_RET(interface, status, CheckFramebufferStatus(GR_GL_FRAMEBUFFER)); + SkASSERT(GR_GL_FRAMEBUFFER_COMPLETE == status); #endif - } return true; } else { const GrGLStencilAttachment* glStencil = static_cast<const GrGLStencilAttachment*>(stencil); |