Driver bug workaround: unbind_attachments_on_bound_render_fbo_delete
Bug: chromium: 829614
Change-Id: Ic6bc276d1203d24f96fe92b41655871e25f69623
Reviewed-on: https://skia-review.googlesource.com/128395
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Adrienne Walker <enne@chromium.org>
diff --git a/src/gpu/gl/GrGLRenderTarget.cpp b/src/gpu/gl/GrGLRenderTarget.cpp
index 693bc12..34f8df1 100644
--- a/src/gpu/gl/GrGLRenderTarget.cpp
+++ b/src/gpu/gl/GrGLRenderTarget.cpp
@@ -128,8 +128,7 @@
GrGLuint rb = glStencil->renderbufferID();
gpu->invalidateBoundRenderTarget();
- gpu->stats()->incRenderTargetBinds();
- GR_GL_CALL(interface, BindFramebuffer(GR_GL_FRAMEBUFFER, this->renderFBOID()));
+ gpu->bindFramebuffer(GR_GL_FRAMEBUFFER, this->renderFBOID());
GR_GL_CALL(interface, FramebufferRenderbuffer(GR_GL_FRAMEBUFFER,
GR_GL_STENCIL_ATTACHMENT,
GR_GL_RENDERBUFFER, rb));
@@ -143,7 +142,6 @@
GR_GL_RENDERBUFFER, 0));
}
- gpu->didBindFramebuffer();
#ifdef SK_DEBUG
if (kChromium_GrGLDriver != gpu->glContext().driver()) {
@@ -160,11 +158,12 @@
void GrGLRenderTarget::onRelease() {
if (GrBackendObjectOwnership::kBorrowed != fRTFBOOwnership) {
+ GrGLGpu* gpu = this->getGLGpu();
if (fTexFBOID) {
- GL_CALL(DeleteFramebuffers(1, &fTexFBOID));
+ gpu->deleteFramebuffer(fTexFBOID);
}
if (fRTFBOID && fRTFBOID != fTexFBOID) {
- GL_CALL(DeleteFramebuffers(1, &fRTFBOID));
+ gpu->deleteFramebuffer(fRTFBOID);
}
if (fMSColorRenderbufferID) {
GL_CALL(DeleteRenderbuffers(1, &fMSColorRenderbufferID));