OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2015 Google Inc. | 3 * Copyright 2015 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 #include "GrAALinearizingConvexPathRenderer.h" | 9 #include "GrAALinearizingConvexPathRenderer.h" |
10 | 10 |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 SkPaint::Join fJoin; | 128 SkPaint::Join fJoin; |
129 SkScalar fMiterLimit; | 129 SkScalar fMiterLimit; |
130 }; | 130 }; |
131 | 131 |
132 static GrDrawBatch* Create(const Geometry& geometry) { | 132 static GrDrawBatch* Create(const Geometry& geometry) { |
133 return new AAFlatteningConvexPathBatch(geometry); | 133 return new AAFlatteningConvexPathBatch(geometry); |
134 } | 134 } |
135 | 135 |
136 const char* name() const override { return "AAConvexBatch"; } | 136 const char* name() const override { return "AAConvexBatch"; } |
137 | 137 |
138 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { | 138 void computePipelineOptimizations(GrInitInvariantOutput* color, |
| 139 GrInitInvariantOutput* coverage, |
| 140 GrBatchToXPOverrides* overrides) const ove
rride { |
139 // When this is called on a batch, there is only one geometry bundle | 141 // When this is called on a batch, there is only one geometry bundle |
140 out->setKnownFourComponents(fGeoData[0].fColor); | 142 color->setKnownFourComponents(fGeoData[0].fColor); |
141 } | 143 coverage->setUnknownSingleComponent(); |
142 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { | 144 overrides->fUsePLSDstRead = false; |
143 out->setUnknownSingleComponent(); | |
144 } | 145 } |
145 | 146 |
146 private: | 147 private: |
147 void initBatchTracker(const GrPipelineOptimizations& opt) override { | 148 void initBatchTracker(const GrXPOverridesForBatch& overrides) override { |
148 // Handle any color overrides | 149 // Handle any color overrides |
149 if (!opt.readsColor()) { | 150 if (!overrides.readsColor()) { |
150 fGeoData[0].fColor = GrColor_ILLEGAL; | 151 fGeoData[0].fColor = GrColor_ILLEGAL; |
151 } | 152 } |
152 opt.getOverrideColorIfSet(&fGeoData[0].fColor); | 153 overrides.getOverrideColorIfSet(&fGeoData[0].fColor); |
153 | 154 |
154 // setup batch properties | 155 // setup batch properties |
155 fBatch.fColorIgnored = !opt.readsColor(); | 156 fBatch.fColorIgnored = !overrides.readsColor(); |
156 fBatch.fColor = fGeoData[0].fColor; | 157 fBatch.fColor = fGeoData[0].fColor; |
157 fBatch.fUsesLocalCoords = opt.readsLocalCoords(); | 158 fBatch.fUsesLocalCoords = overrides.readsLocalCoords(); |
158 fBatch.fCoverageIgnored = !opt.readsCoverage(); | 159 fBatch.fCoverageIgnored = !overrides.readsCoverage(); |
159 fBatch.fLinesOnly = SkPath::kLine_SegmentMask == fGeoData[0].fPath.getSe
gmentMasks(); | 160 fBatch.fLinesOnly = SkPath::kLine_SegmentMask == fGeoData[0].fPath.getSe
gmentMasks(); |
160 fBatch.fCanTweakAlphaForCoverage = opt.canTweakAlphaForCoverage(); | 161 fBatch.fCanTweakAlphaForCoverage = overrides.canTweakAlphaForCoverage(); |
161 } | 162 } |
162 | 163 |
163 void draw(GrVertexBatch::Target* target, const GrPipeline* pipeline, int ver
texCount, | 164 void draw(GrVertexBatch::Target* target, const GrPipeline* pipeline, int ver
texCount, |
164 size_t vertexStride, void* vertices, int indexCount, uint16_t* indic
es) { | 165 size_t vertexStride, void* vertices, int indexCount, uint16_t* indic
es) { |
165 if (vertexCount == 0 || indexCount == 0) { | 166 if (vertexCount == 0 || indexCount == 0) { |
166 return; | 167 return; |
167 } | 168 } |
168 const GrVertexBuffer* vertexBuffer; | 169 const GrVertexBuffer* vertexBuffer; |
169 GrVertices info; | 170 GrVertices info; |
170 int firstVertex; | 171 int firstVertex; |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 DRAW_BATCH_TEST_DEFINE(AAFlatteningConvexPathBatch) { | 348 DRAW_BATCH_TEST_DEFINE(AAFlatteningConvexPathBatch) { |
348 AAFlatteningConvexPathBatch::Geometry geometry; | 349 AAFlatteningConvexPathBatch::Geometry geometry; |
349 geometry.fColor = GrRandomColor(random); | 350 geometry.fColor = GrRandomColor(random); |
350 geometry.fViewMatrix = GrTest::TestMatrixInvertible(random); | 351 geometry.fViewMatrix = GrTest::TestMatrixInvertible(random); |
351 geometry.fPath = GrTest::TestPathConvex(random); | 352 geometry.fPath = GrTest::TestPathConvex(random); |
352 | 353 |
353 return AAFlatteningConvexPathBatch::Create(geometry); | 354 return AAFlatteningConvexPathBatch::Create(geometry); |
354 } | 355 } |
355 | 356 |
356 #endif | 357 #endif |
OLD | NEW |