| /* | |
| * Copyright 2012 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #include "GrFrameBufferObj.h" | |
| #include "GrFBBindableObj.h" | |
| void GrFrameBufferObj::setColor(GrFBBindableObj *buffer) { | |
| if (fColorBuffer) { | |
| // automatically break the binding of the old buffer | |
| GrAlwaysAssert(fColorBuffer->getColorBound(this)); | |
| fColorBuffer->resetColorBound(this); | |
| GrAlwaysAssert(!fColorBuffer->getDeleted()); | |
| fColorBuffer->unref(); | |
| } | |
| fColorBuffer = buffer; | |
| if (fColorBuffer) { | |
| GrAlwaysAssert(!fColorBuffer->getDeleted()); | |
| fColorBuffer->ref(); | |
| GrAlwaysAssert(!fColorBuffer->getColorBound(this)); | |
| fColorBuffer->setColorBound(this); | |
| } | |
| } | |
| void GrFrameBufferObj::setDepth(GrFBBindableObj *buffer) { | |
| if (fDepthBuffer) { | |
| // automatically break the binding of the old buffer | |
| GrAlwaysAssert(fDepthBuffer->getDepthBound(this)); | |
| fDepthBuffer->resetDepthBound(this); | |
| GrAlwaysAssert(!fDepthBuffer->getDeleted()); | |
| fDepthBuffer->unref(); | |
| } | |
| fDepthBuffer = buffer; | |
| if (fDepthBuffer) { | |
| GrAlwaysAssert(!fDepthBuffer->getDeleted()); | |
| fDepthBuffer->ref(); | |
| GrAlwaysAssert(!fDepthBuffer->getDepthBound(this)); | |
| fDepthBuffer->setDepthBound(this); | |
| } | |
| } | |
| void GrFrameBufferObj::setStencil(GrFBBindableObj *buffer) { | |
| if (fStencilBuffer) { | |
| // automatically break the binding of the old buffer | |
| GrAlwaysAssert(fStencilBuffer->getStencilBound(this)); | |
| fStencilBuffer->resetStencilBound(this); | |
| //GrAlwaysAssert(!fStencilBuffer->getDeleted()); | |
| fStencilBuffer->unref(); | |
| } | |
| fStencilBuffer = buffer; | |
| if (fStencilBuffer) { | |
| GrAlwaysAssert(!fStencilBuffer->getDeleted()); | |
| fStencilBuffer->ref(); | |
| GrAlwaysAssert(!fStencilBuffer->getStencilBound(this)); | |
| fStencilBuffer->setStencilBound(this); | |
| } | |
| } |