aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGLRenderTarget.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2015-03-01 07:38:15 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-03-01 07:38:15 -0800
commit73165bd417d6cd4b4513df54b58e23e33f151a3f (patch)
tree570e956f01d12e2fc0e51ebb106c15a600c56a36 /src/gpu/gl/GrGLRenderTarget.cpp
parent3d32d50364d1b63777fbf05c3593a35601bde9e2 (diff)
Revert of Improve tracking of bound FBOs in GrGLGpu. (patchset #10 id:180001 of https://codereview.chromium.org/949263002/)
Reason for revert: Experimentally reverting to see if this is the cause of the mac_chromium_rel_ng roll-blocking failures. Original issue's description: > Improve tracking of bound FBOs in GrGLGpu. > > Committed: https://skia.googlesource.com/skia/+/d2ad8eb5801e2c8c0fa544a6a776bb46eedde2a0 > > Committed: https://skia.googlesource.com/skia/+/b2af2d8b83ca4774c3b3bb1e49bc72605faa9589 > > Committed: https://skia.googlesource.com/skia/+/0b70b86a7e9fda52ee7ebc1b9897eeaa09b9abef TBR=egdaniel@google.com,bsalomon@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/970613003
Diffstat (limited to 'src/gpu/gl/GrGLRenderTarget.cpp')
-rw-r--r--src/gpu/gl/GrGLRenderTarget.cpp61
1 files changed, 16 insertions, 45 deletions
diff --git a/src/gpu/gl/GrGLRenderTarget.cpp b/src/gpu/gl/GrGLRenderTarget.cpp
index 8b9bb98b6b..3eb2ae09fe 100644
--- a/src/gpu/gl/GrGLRenderTarget.cpp
+++ b/src/gpu/gl/GrGLRenderTarget.cpp
@@ -9,20 +9,8 @@
#include "GrGLGpu.h"
-void GrGLFBO::release(const GrGLInterface* gl) {
- SkASSERT(gl);
- if (this->isValid()) {
- GR_GL_CALL(gl, DeleteFramebuffers(1, &fID));
- fIsValid = false;
- }
-}
-
-void GrGLFBO::abandon() { fIsValid = false; }
-
-//////////////////////////////////////////////////////////////////////////////
-
-#define GLGPU static_cast<GrGLGpu*>(this->getGpu())
-#define GL_CALL(X) GR_GL_CALL(GLGPU->glInterface(), X)
+#define GPUGL static_cast<GrGLGpu*>(this->getGpu())
+#define GL_CALL(X) GR_GL_CALL(GPUGL->glInterface(), X)
// Because this class is virtually derived from GrSurface we must explicitly call its constructor.
GrGLRenderTarget::GrGLRenderTarget(GrGLGpu* gpu, const GrSurfaceDesc& desc, const IDDesc& idDesc)
@@ -40,10 +28,8 @@ GrGLRenderTarget::GrGLRenderTarget(GrGLGpu* gpu, const GrSurfaceDesc& desc, cons
}
void GrGLRenderTarget::init(const GrSurfaceDesc& desc, const IDDesc& idDesc) {
- fRenderFBO.reset(SkRef(idDesc.fRenderFBO.get()));
- fTextureFBO.reset(SkSafeRef(idDesc.fTextureFBO.get()));
- SkASSERT(fRenderFBO->isValid());
- SkASSERT(!fTextureFBO || fTextureFBO->isValid());
+ fRTFBOID = idDesc.fRTFBOID;
+ fTexFBOID = idDesc.fTexFBOID;
fMSColorRenderbufferID = idDesc.fMSColorRenderbufferID;
fIsWrapped = kWrapped_LifeCycle == idDesc.fLifeCycle;
@@ -54,7 +40,7 @@ void GrGLRenderTarget::init(const GrSurfaceDesc& desc, const IDDesc& idDesc) {
// We own one color value for each MSAA sample.
fColorValuesPerPixel = SkTMax(1, fDesc.fSampleCnt);
- if (fTextureFBO && fTextureFBO != fRenderFBO) {
+ if (fTexFBOID != fRTFBOID) {
// If we own the resolve buffer then that is one more sample per pixel.
fColorValuesPerPixel += 1;
}
@@ -70,42 +56,27 @@ size_t GrGLRenderTarget::onGpuMemorySize() const {
void GrGLRenderTarget::onRelease() {
if (!fIsWrapped) {
- const GrGLInterface* gl = GLGPU->glInterface();
- if (fRenderFBO) {
- fRenderFBO->release(gl);
- fRenderFBO.reset(NULL);
+ if (fTexFBOID) {
+ GL_CALL(DeleteFramebuffers(1, &fTexFBOID));
}
- if (fTextureFBO) {
- fTextureFBO->release(gl);
- fTextureFBO.reset(NULL);
+ if (fRTFBOID && fRTFBOID != fTexFBOID) {
+ GL_CALL(DeleteFramebuffers(1, &fRTFBOID));
}
if (fMSColorRenderbufferID) {
GL_CALL(DeleteRenderbuffers(1, &fMSColorRenderbufferID));
- fMSColorRenderbufferID = 0;
}
- } else {
- if (fRenderFBO) {
- fRenderFBO->abandon();
- fRenderFBO.reset(NULL);
- }
- if (fTextureFBO) {
- fTextureFBO->abandon();
- fTextureFBO.reset(NULL);
- }
- fMSColorRenderbufferID = 0;
}
+ fRTFBOID = 0;
+ fTexFBOID = 0;
+ fMSColorRenderbufferID = 0;
+ fIsWrapped = false;
INHERITED::onRelease();
}
void GrGLRenderTarget::onAbandon() {
- if (fRenderFBO) {
- fRenderFBO->abandon();
- fRenderFBO.reset(NULL);
- }
- if (fTextureFBO) {
- fTextureFBO->abandon();
- fTextureFBO.reset(NULL);
- }
+ fRTFBOID = 0;
+ fTexFBOID = 0;
fMSColorRenderbufferID = 0;
+ fIsWrapped = false;
INHERITED::onAbandon();
}