Index: src/gpu/batches/GrDrawPathBatch.cpp |
diff --git a/src/gpu/batches/GrDrawPathBatch.cpp b/src/gpu/batches/GrDrawPathBatch.cpp |
index fb9ca943dcb223d9bee72380dc0116ece2b53e37..1395d083286c7482a9c85bd5c0ef63adc81a0aca 100644 |
--- a/src/gpu/batches/GrDrawPathBatch.cpp |
+++ b/src/gpu/batches/GrDrawPathBatch.cpp |
@@ -13,84 +13,18 @@ |
SkString GrDrawPathBatch::dumpInfo() const { |
SkString string; |
- string.printf("Color: 0x%08x Fill: %x Path count: %d Paths: ", this->color(), this->fillType(), |
- fTotalPathCount); |
- const GrDrawPathBatch* batch = this; |
- do { |
- string.appendf("0x%p", batch->fPath.get()); |
- batch = batch->fNext.get(); |
- } while (batch); |
- string.append("\n"); |
+ string.printf("PATH: 0x%p", fPath.get()); |
return string; |
} |
-bool GrDrawPathBatch::ListBoundsIntersects(const GrDrawPathBatch* a, const GrDrawPathBatch* b) { |
- if (!SkRect::Intersects(a->fBounds, b->fBounds)) { |
- return false; |
- } |
- if (!a->fNext && !b->fNext) { |
- return true; |
- } |
- const GrDrawPathBatch* firstA = a; |
- do { |
- do { |
- if (SkRect::Intersects(a->fPathBounds, b->fPathBounds)) { |
- return true; |
- } |
- a = a->fNext.get(); |
- } while (a); |
- a = firstA; |
- b = b->fNext.get(); |
- } while (b); |
- return false; |
-} |
- |
-bool GrDrawPathBatch::onCombineIfPossible(GrBatch* t, const GrCaps& caps) { |
- GrDrawPathBatch* that = t->cast<GrDrawPathBatch>(); |
- if (this->color() != that->color() || |
- !this->viewMatrix().cheapEqualTo(that->viewMatrix())) { |
- return false; |
- } |
- if (!GrPipeline::AreEqual(*this->pipeline(), *that->pipeline(), false)) { |
- return false; |
- } |
- if (that->fillType() != this->fillType() || |
- this->stencilSettings() != that->stencilSettings()) { |
- return false; |
- } |
- if (ListBoundsIntersects(this, that)) { |
- return false; |
- } |
- if (!fPath.get()->canCombineDrawPathBatchWith(*that->fPath.get())) { |
- return false; |
- } |
- SkASSERT(!*fLastSlot); |
- fLastSlot->reset(SkRef(that)); |
- fLastSlot = that->fLastSlot; |
- fTotalPathCount += that->fTotalPathCount; |
- this->joinBounds(that->fBounds); |
- return true; |
-} |
- |
void GrDrawPathBatch::onDraw(GrBatchFlushState* state) { |
+ GrProgramDesc desc; |
+ |
SkAutoTUnref<GrPathProcessor> pathProc(GrPathProcessor::Create(this->color(), |
this->overrides(), |
this->viewMatrix())); |
- if (fTotalPathCount > 1) { |
- SkAutoSTMalloc<32, const GrPath*> paths(fTotalPathCount); |
- GrDrawPathBatch* batch = this; |
- int i = 0; |
- do { |
- paths[i++] = batch->fPath.get(); |
- batch = batch->fNext.get(); |
- } while (batch); |
- state->gpu()->pathRendering()->drawPaths(*this->pipeline(), *pathProc, |
- this->stencilSettings(), paths, fTotalPathCount); |
- } else { |
- const GrPath* path = fPath.get(); |
- state->gpu()->pathRendering()->drawPaths(*this->pipeline(), *pathProc, |
- this->stencilSettings(), &path, 1); |
- } |
+ state->gpu()->pathRendering()->drawPath(*this->pipeline(), *pathProc, this->stencilSettings(), |
+ fPath.get()); |
} |
SkString GrDrawPathRangeBatch::dumpInfo() const { |