diff options
author | 2015-03-01 07:38:15 -0800 | |
---|---|---|
committer | 2015-03-01 07:38:15 -0800 | |
commit | 73165bd417d6cd4b4513df54b58e23e33f151a3f (patch) | |
tree | 570e956f01d12e2fc0e51ebb106c15a600c56a36 /src/gpu/gl/GrGLRenderTarget.cpp | |
parent | 3d32d50364d1b63777fbf05c3593a35601bde9e2 (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.cpp | 61 |
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(); } |