| |
| /* |
| * 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); |
| } |
| } |