simple fix to close batches on anything push to the GrIODB recorder
BUG=skia:
Review URL: https://codereview.chromium.org/865153005
diff --git a/src/gpu/GrInOrderDrawBuffer.cpp b/src/gpu/GrInOrderDrawBuffer.cpp
index 3e177ed..cae1bd5 100644
--- a/src/gpu/GrInOrderDrawBuffer.cpp
+++ b/src/gpu/GrInOrderDrawBuffer.cpp
@@ -249,8 +249,6 @@
const DrawInfo& info,
const GrScissorState& scissorState) {
SkASSERT(info.vertexBuffer() && (!info.isIndexed() || info.indexBuffer()));
-
- // This closeBatch call is required because we may introduce new draws when we setup clip
this->closeBatch();
if (!this->recordStateAndShouldDraw(pipelineBuilder, gp, scissorState, info.getDevBounds())) {
@@ -301,6 +299,8 @@
const GrPath* path,
const GrScissorState& scissorState,
const GrStencilSettings& stencilSettings) {
+ this->closeBatch();
+
StencilPath* sp = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, StencilPath,
(path, pipelineBuilder.getRenderTarget()));
sp->fScissor = scissorState;
@@ -341,7 +341,6 @@
SkASSERT(pathRange);
SkASSERT(indices);
SkASSERT(transformValues);
-
this->closeBatch();
if (!this->recordStateAndShouldDraw(pipelineBuilder, pathProc, scissorState, devBounds)) {
@@ -395,6 +394,8 @@
void GrInOrderDrawBuffer::onClear(const SkIRect* rect, GrColor color,
bool canIgnoreRect, GrRenderTarget* renderTarget) {
SkASSERT(renderTarget);
+ this->closeBatch();
+
SkIRect r;
if (NULL == rect) {
// We could do something smart and remove previous draws and clears to
@@ -415,6 +416,8 @@
bool insideClip,
GrRenderTarget* renderTarget) {
SkASSERT(renderTarget);
+ this->closeBatch();
+
ClearStencilClip* clr = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, ClearStencilClip, (renderTarget));
clr->fRect = rect;
clr->fInsideClip = insideClip;
@@ -423,6 +426,8 @@
void GrInOrderDrawBuffer::discard(GrRenderTarget* renderTarget) {
SkASSERT(renderTarget);
+ this->closeBatch();
+
if (!this->caps()->discardRenderTargetSupport()) {
return;
}
@@ -653,15 +658,6 @@
}
}
-void GrInOrderDrawBuffer::closeBatch() {
- if (fDrawBatch) {
- fBatchTarget.resetNumberOfDraws();
- fDrawBatch->execute(this, fPrevState);
- fDrawBatch->fBatch->setNumberOfDraws(fBatchTarget.numberOfDraws());
- fDrawBatch = NULL;
- }
-}
-
void GrInOrderDrawBuffer::willReserveVertexAndIndexSpace(int vertexCount,
size_t vertexStride,
int indexCount) {