| Index: src/gpu/gl/GrGLRenderTarget.cpp
|
| diff --git a/src/gpu/gl/GrGLRenderTarget.cpp b/src/gpu/gl/GrGLRenderTarget.cpp
|
| index 8b9bb98b6b5ac8d89c020a4198c79da1901fe1ed..3eb2ae09fea489802fe38faa77523be8c6c17fc9 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 @@
|
| }
|
|
|
| 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 @@
|
|
|
| // 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 @@
|
|
|
| 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();
|
| }
|
|
|