Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: src/gpu/GrDefaultGeoProcFactory.cpp

Issue 820783005: More changes to bring together path / geo procs (Closed) Base URL: https://skia.googlesource.com/skia.git@lc1
Patch Set: feedback incorporated Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrDefaultGeoProcFactory.h" 8 #include "GrDefaultGeoProcFactory.h"
9 9
10 #include "GrDrawState.h" 10 #include "GrDrawState.h"
(...skipping 19 matching lines...) Expand all
30 return SkNEW_ARGS(DefaultGeoProc, (gpTypeFlags, 30 return SkNEW_ARGS(DefaultGeoProc, (gpTypeFlags,
31 color, 31 color,
32 viewMatrix, 32 viewMatrix,
33 localMatrix, 33 localMatrix,
34 opaqueVertexColors, 34 opaqueVertexColors,
35 coverage)); 35 coverage));
36 } 36 }
37 37
38 virtual const char* name() const SK_OVERRIDE { return "DefaultGeometryProces sor"; } 38 virtual const char* name() const SK_OVERRIDE { return "DefaultGeometryProces sor"; }
39 39
40 const GrAttribute* inPosition() const { return fInPosition; } 40 const Attribute* inPosition() const { return fInPosition; }
41 const GrAttribute* inColor() const { return fInColor; } 41 const Attribute* inColor() const { return fInColor; }
42 const GrAttribute* inLocalCoords() const { return fInLocalCoords; } 42 const Attribute* inLocalCoords() const { return fInLocalCoords; }
43 const GrAttribute* inCoverage() const { return fInCoverage; } 43 const Attribute* inCoverage() const { return fInCoverage; }
44 uint8_t coverage() const { return fCoverage; } 44 uint8_t coverage() const { return fCoverage; }
45 45
46 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE { 46 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE {
47 BatchTracker* local = bt->cast<BatchTracker>(); 47 BatchTracker* local = bt->cast<BatchTracker>();
48 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, 48 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init,
49 SkToBool(fInColor)); 49 SkToBool(fInColor));
50 50
51 bool hasVertexCoverage = SkToBool(fInCoverage) && !init.fCoverageIgnored ; 51 bool hasVertexCoverage = SkToBool(fInCoverage) && !init.fCoverageIgnored ;
52 bool covIsSolidWhite = !hasVertexCoverage && 0xff == this->coverage(); 52 bool covIsSolidWhite = !hasVertexCoverage && 0xff == this->coverage();
53 if (covIsSolidWhite) { 53 if (covIsSolidWhite) {
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 , fInPosition(NULL) 198 , fInPosition(NULL)
199 , fInColor(NULL) 199 , fInColor(NULL)
200 , fInLocalCoords(NULL) 200 , fInLocalCoords(NULL)
201 , fInCoverage(NULL) 201 , fInCoverage(NULL)
202 , fCoverage(coverage) 202 , fCoverage(coverage)
203 , fFlags(gpTypeFlags) { 203 , fFlags(gpTypeFlags) {
204 this->initClassID<DefaultGeoProc>(); 204 this->initClassID<DefaultGeoProc>();
205 bool hasColor = SkToBool(gpTypeFlags & GrDefaultGeoProcFactory::kColor_G PType); 205 bool hasColor = SkToBool(gpTypeFlags & GrDefaultGeoProcFactory::kColor_G PType);
206 bool hasLocalCoord = SkToBool(gpTypeFlags & GrDefaultGeoProcFactory::kLo calCoord_GPType); 206 bool hasLocalCoord = SkToBool(gpTypeFlags & GrDefaultGeoProcFactory::kLo calCoord_GPType);
207 bool hasCoverage = SkToBool(gpTypeFlags & GrDefaultGeoProcFactory::kCove rage_GPType); 207 bool hasCoverage = SkToBool(gpTypeFlags & GrDefaultGeoProcFactory::kCove rage_GPType);
208 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 208 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
209 if (hasColor) { 209 if (hasColor) {
210 fInColor = &this->addVertexAttrib(GrAttribute("inColor", kVec4ub_GrV ertexAttribType)); 210 fInColor = &this->addVertexAttrib(Attribute("inColor", kVec4ub_GrVer texAttribType));
211 this->setHasVertexColor(); 211 this->setHasVertexColor();
212 } 212 }
213 if (hasLocalCoord) { 213 if (hasLocalCoord) {
214 fInLocalCoords = &this->addVertexAttrib(GrAttribute("inLocalCoord", 214 fInLocalCoords = &this->addVertexAttrib(Attribute("inLocalCoord",
215 kVec2f_GrVertexA ttribType)); 215 kVec2f_GrVertexA ttribType));
216 this->setHasLocalCoords(); 216 this->setHasLocalCoords();
217 } 217 }
218 if (hasCoverage) { 218 if (hasCoverage) {
219 fInCoverage = &this->addVertexAttrib(GrAttribute("inCoverage", 219 fInCoverage = &this->addVertexAttrib(Attribute("inCoverage",
220 kFloat_GrVertexAttr ibType)); 220 kFloat_GrVertexAttr ibType));
221 } 221 }
222 } 222 }
223 223
224 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 224 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
225 const DefaultGeoProc& gp = other.cast<DefaultGeoProc>(); 225 const DefaultGeoProc& gp = other.cast<DefaultGeoProc>();
226 return gp.fFlags == this->fFlags; 226 return gp.fFlags == this->fFlags;
227 } 227 }
228 228
229 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE { 229 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE {
230 if (fInCoverage) { 230 if (fInCoverage) {
231 out->setUnknownSingleComponent(); 231 out->setUnknownSingleComponent();
232 } else { 232 } else {
233 // uniform coverage 233 // uniform coverage
234 out->setKnownSingleComponent(this->coverage()); 234 out->setKnownSingleComponent(this->coverage());
235 } 235 }
236 } 236 }
237 237
238 struct BatchTracker { 238 struct BatchTracker {
239 GrGPInput fInputColorType; 239 GrGPInput fInputColorType;
240 GrGPInput fInputCoverageType; 240 GrGPInput fInputCoverageType;
241 GrColor fColor; 241 GrColor fColor;
242 GrColor fCoverage; 242 GrColor fCoverage;
243 bool fUsesLocalCoords; 243 bool fUsesLocalCoords;
244 }; 244 };
245 245
246 const GrAttribute* fInPosition; 246 const Attribute* fInPosition;
247 const GrAttribute* fInColor; 247 const Attribute* fInColor;
248 const GrAttribute* fInLocalCoords; 248 const Attribute* fInLocalCoords;
249 const GrAttribute* fInCoverage; 249 const Attribute* fInCoverage;
250 uint8_t fCoverage; 250 uint8_t fCoverage;
251 uint32_t fFlags; 251 uint32_t fFlags;
252 252
253 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 253 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
254 254
255 typedef GrGeometryProcessor INHERITED; 255 typedef GrGeometryProcessor INHERITED;
256 }; 256 };
257 257
258 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DefaultGeoProc); 258 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DefaultGeoProc);
259 259
(...skipping 26 matching lines...) Expand all
286 const SkMatrix& local Matrix, 286 const SkMatrix& local Matrix,
287 bool opaqueVertexColo rs, 287 bool opaqueVertexColo rs,
288 uint8_t coverage) { 288 uint8_t coverage) {
289 return DefaultGeoProc::Create(gpTypeFlags, 289 return DefaultGeoProc::Create(gpTypeFlags,
290 color, 290 color,
291 viewMatrix, 291 viewMatrix,
292 localMatrix, 292 localMatrix,
293 opaqueVertexColors, 293 opaqueVertexColors,
294 coverage); 294 coverage);
295 } 295 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698