Fix assertion in in order draw buffer
authorbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 16 Aug 2012 16:26:33 +0000 (16:26 +0000)
committerbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 16 Aug 2012 16:26:33 +0000 (16:26 +0000)
Review URL: http://codereview.appspot.com/6460095/

git-svn-id: http://skia.googlecode.com/svn/trunk@5130 2bbb7eff-a529-9590-31e7-b0007b416f81

src/gpu/GrInOrderDrawBuffer.cpp

index 9f24c4e..a0585f7 100644 (file)
@@ -708,8 +708,11 @@ bool GrInOrderDrawBuffer::onReserveIndexSpace(int indexCount, void** indices) {
 void GrInOrderDrawBuffer::releaseReservedVertexSpace() {
     GeometryPoolState& poolState = fGeoPoolStateStack.back();
     const GeometrySrcState& geoSrc = this->getGeomSrc(); 
-    
-    GrAssert(kReserved_GeometrySrcType == geoSrc.fVertexSrc);
+
+    // If we get a release vertex space call then our current source should either be reserved
+    // or array (which we copied into reserved space).
+    GrAssert(kReserved_GeometrySrcType == geoSrc.fVertexSrc ||
+             kArray_GeometrySrcType == geoSrc.fVertexSrc);
 
     // When the caller reserved vertex buffer space we gave it back a pointer
     // provided by the vertex buffer pool. At each draw we tracked the largest
@@ -728,7 +731,10 @@ void GrInOrderDrawBuffer::releaseReservedIndexSpace() {
     GeometryPoolState& poolState = fGeoPoolStateStack.back();
     const GeometrySrcState& geoSrc = this->getGeomSrc(); 
 
-    GrAssert(kReserved_GeometrySrcType == geoSrc.fIndexSrc);
+    // If we get a release index space call then our current source should either be reserved
+    // or array (which we copied into reserved space).
+    GrAssert(kReserved_GeometrySrcType == geoSrc.fIndexSrc ||
+             kArray_GeometrySrcType == geoSrc.fIndexSrc);
 
     // Similar to releaseReservedVertexSpace we return any unused portion at
     // the tail