Index: src/gpu/gl/debug/GrFrameBufferObj.cpp |
diff --git a/src/gpu/gl/debug/GrFrameBufferObj.cpp b/src/gpu/gl/debug/GrFrameBufferObj.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a8acc3de23a959a9d39faf358972668e3b5eab44 |
--- /dev/null |
+++ b/src/gpu/gl/debug/GrFrameBufferObj.cpp |
@@ -0,0 +1,66 @@ |
+/* |
+ * 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); |
+ } |
+} |