diff options
author | joshualitt <joshualitt@chromium.org> | 2015-05-19 08:23:30 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-19 08:23:30 -0700 |
commit | b8c241ad099f3f0c2cbf3e7c10f5f6207175d490 (patch) | |
tree | 5d5595ba1d6472261af05b0e698cda2160834033 /src/gpu/GrAARectRenderer.cpp | |
parent | d3a560fa80bfb3e2d2e989f951bb3b1c52316654 (diff) |
Preliminary attempt to remove batch tracker
BUG=skia:
Committed: https://skia.googlesource.com/skia/+/cbfe91d82500f4ae8c3ff7bd74b3021a4b89fd84
Review URL: https://codereview.chromium.org/1139723004
Diffstat (limited to 'src/gpu/GrAARectRenderer.cpp')
-rw-r--r-- | src/gpu/GrAARectRenderer.cpp | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp index a4656a7c3e..6b8abc38fb 100644 --- a/src/gpu/GrAARectRenderer.cpp +++ b/src/gpu/GrAARectRenderer.cpp @@ -31,14 +31,18 @@ static void set_inset_fan(SkPoint* pts, size_t stride, } static const GrGeometryProcessor* create_fill_rect_gp(bool tweakAlphaForCoverage, - const SkMatrix& localMatrix) { + const SkMatrix& localMatrix, + bool usesLocalCoords, + bool coverageIgnored) { uint32_t flags = GrDefaultGeoProcFactory::kColor_GPType; const GrGeometryProcessor* gp; if (tweakAlphaForCoverage) { - gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, SkMatrix::I(), localMatrix); + gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords, coverageIgnored, + SkMatrix::I(), localMatrix); } else { flags |= GrDefaultGeoProcFactory::kCoverage_GPType; - gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, SkMatrix::I(), localMatrix); + gp = GrDefaultGeoProcFactory::Create(flags, GrColor_WHITE, usesLocalCoords, coverageIgnored, + SkMatrix::I(), localMatrix); } return gp; } @@ -95,20 +99,12 @@ public: } SkAutoTUnref<const GrGeometryProcessor> gp(create_fill_rect_gp(canTweakAlphaForCoverage, - localMatrix)); + localMatrix, + this->usesLocalCoords(), + this->coverageIgnored())); batchTarget->initDraw(gp, pipeline); - // TODO this is hacky, but the only way we have to initialize the GP is to use the - // GrPipelineInfo struct so we can generate the correct shader. Once we have GrBatch - // everywhere we can remove this nastiness - GrPipelineInfo init; - init.fColorIgnored = fBatch.fColorIgnored; - init.fOverrideColor = GrColor_ILLEGAL; - init.fCoverageIgnored = fBatch.fCoverageIgnored; - init.fUsesLocalCoords = this->usesLocalCoords(); - gp->initBatchTracker(batchTarget->currentBatchTracker(), init); - size_t vertexStride = gp->getVertexStride(); SkASSERT(canTweakAlphaForCoverage ? vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorAttr) : @@ -176,6 +172,7 @@ private: bool canTweakAlphaForCoverage() const { return fBatch.fCanTweakAlphaForCoverage; } bool colorIgnored() const { return fBatch.fColorIgnored; } const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } + bool coverageIgnored() const { return fBatch.fCoverageIgnored; } bool onCombineIfPossible(GrBatch* t) override { AAFillRectBatch* that = t->cast<AAFillRectBatch>(); @@ -453,20 +450,12 @@ public: } SkAutoTUnref<const GrGeometryProcessor> gp(create_fill_rect_gp(canTweakAlphaForCoverage, - localMatrix)); + localMatrix, + this->usesLocalCoords(), + this->coverageIgnored())); batchTarget->initDraw(gp, pipeline); - // TODO this is hacky, but the only way we have to initialize the GP is to use the - // GrPipelineInfo struct so we can generate the correct shader. Once we have GrBatch - // everywhere we can remove this nastiness - GrPipelineInfo init; - init.fColorIgnored = fBatch.fColorIgnored; - init.fOverrideColor = GrColor_ILLEGAL; - init.fCoverageIgnored = fBatch.fCoverageIgnored; - init.fUsesLocalCoords = this->usesLocalCoords(); - gp->initBatchTracker(batchTarget->currentBatchTracker(), init); - size_t vertexStride = gp->getVertexStride(); SkASSERT(canTweakAlphaForCoverage ? @@ -626,6 +615,7 @@ private: bool colorIgnored() const { return fBatch.fColorIgnored; } const SkMatrix& viewMatrix() const { return fBatch.fViewMatrix; } bool miterStroke() const { return fBatch.fMiterStroke; } + bool coverageIgnored() const { return fBatch.fCoverageIgnored; } bool onCombineIfPossible(GrBatch* t) override { AAStrokeRectBatch* that = t->cast<AAStrokeRectBatch>(); |