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

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

Issue 820783005: More changes to bring together path / geo procs (Closed) Base URL: https://skia.googlesource.com/skia.git@lc1
Patch Set: dm fix 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
« no previous file with comments | « src/gpu/GrOptDrawState.cpp ('k') | src/gpu/effects/GrBezierEffect.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 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 "GrOvalRenderer.h" 8 #include "GrOvalRenderer.h"
9 9
10 #include "GrProcessor.h" 10 #include "GrProcessor.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 * outerRad is the outerRadius in device space. 62 * outerRad is the outerRadius in device space.
63 * innerRad is the innerRadius in normalized space (ignored if not s troking). 63 * innerRad is the innerRadius in normalized space (ignored if not s troking).
64 */ 64 */
65 65
66 class CircleEdgeEffect : public GrGeometryProcessor { 66 class CircleEdgeEffect : public GrGeometryProcessor {
67 public: 67 public:
68 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri x& localMatrix) { 68 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri x& localMatrix) {
69 return SkNEW_ARGS(CircleEdgeEffect, (color, stroke, localMatrix)); 69 return SkNEW_ARGS(CircleEdgeEffect, (color, stroke, localMatrix));
70 } 70 }
71 71
72 const GrAttribute* inPosition() const { return fInPosition; } 72 const Attribute* inPosition() const { return fInPosition; }
73 const GrAttribute* inCircleEdge() const { return fInCircleEdge; } 73 const Attribute* inCircleEdge() const { return fInCircleEdge; }
74 virtual ~CircleEdgeEffect() {} 74 virtual ~CircleEdgeEffect() {}
75 75
76 const char* name() const SK_OVERRIDE { return "CircleEdge"; } 76 const char* name() const SK_OVERRIDE { return "CircleEdge"; }
77 77
78 inline bool isStroked() const { return fStroke; } 78 inline bool isStroked() const { return fStroke; }
79 79
80 class GLProcessor : public GrGLGeometryProcessor { 80 class GLProcessor : public GrGLGeometryProcessor {
81 public: 81 public:
82 GLProcessor(const GrGeometryProcessor&, 82 GLProcessor(const GrGeometryProcessor&,
83 const GrBatchTracker&) 83 const GrBatchTracker&)
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords, 179 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords,
180 that, theirs.fUsesLocalCoords) && 180 that, theirs.fUsesLocalCoords) &&
181 CanCombineOutput(mine.fInputColorType, mine.fColor, 181 CanCombineOutput(mine.fInputColorType, mine.fColor,
182 theirs.fInputColorType, theirs.fColor); 182 theirs.fInputColorType, theirs.fColor);
183 } 183 }
184 184
185 private: 185 private:
186 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) 186 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
187 : INHERITED(color, SkMatrix::I(), localMatrix) { 187 : INHERITED(color, SkMatrix::I(), localMatrix) {
188 this->initClassID<CircleEdgeEffect>(); 188 this->initClassID<CircleEdgeEffect>();
189 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 189 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
190 fInCircleEdge = &this->addVertexAttrib(GrAttribute("inCircleEdge", 190 fInCircleEdge = &this->addVertexAttrib(Attribute("inCircleEdge",
191 kVec4f_GrVertexAttrib Type)); 191 kVec4f_GrVertexAttrib Type));
192 fStroke = stroke; 192 fStroke = stroke;
193 } 193 }
194 194
195 bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 195 bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
196 const CircleEdgeEffect& cee = other.cast<CircleEdgeEffect>(); 196 const CircleEdgeEffect& cee = other.cast<CircleEdgeEffect>();
197 return cee.fStroke == fStroke; 197 return cee.fStroke == fStroke;
198 } 198 }
199 199
200 void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERR IDE { 200 void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERR IDE {
201 out->setUnknownSingleComponent(); 201 out->setUnknownSingleComponent();
202 } 202 }
203 203
204 struct BatchTracker { 204 struct BatchTracker {
205 GrGPInput fInputColorType; 205 GrGPInput fInputColorType;
206 GrColor fColor; 206 GrColor fColor;
207 bool fUsesLocalCoords; 207 bool fUsesLocalCoords;
208 }; 208 };
209 209
210 const GrAttribute* fInPosition; 210 const Attribute* fInPosition;
211 const GrAttribute* fInCircleEdge; 211 const Attribute* fInCircleEdge;
212 bool fStroke; 212 bool fStroke;
213 213
214 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 214 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
215 215
216 typedef GrGeometryProcessor INHERITED; 216 typedef GrGeometryProcessor INHERITED;
217 }; 217 };
218 218
219 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(CircleEdgeEffect); 219 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(CircleEdgeEffect);
220 220
221 GrGeometryProcessor* CircleEdgeEffect::TestCreate(SkRandom* random, 221 GrGeometryProcessor* CircleEdgeEffect::TestCreate(SkRandom* random,
(...skipping 18 matching lines...) Expand all
240 class EllipseEdgeEffect : public GrGeometryProcessor { 240 class EllipseEdgeEffect : public GrGeometryProcessor {
241 public: 241 public:
242 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri x& localMatrix) { 242 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri x& localMatrix) {
243 return SkNEW_ARGS(EllipseEdgeEffect, (color, stroke, localMatrix)); 243 return SkNEW_ARGS(EllipseEdgeEffect, (color, stroke, localMatrix));
244 } 244 }
245 245
246 virtual ~EllipseEdgeEffect() {} 246 virtual ~EllipseEdgeEffect() {}
247 247
248 const char* name() const SK_OVERRIDE { return "EllipseEdge"; } 248 const char* name() const SK_OVERRIDE { return "EllipseEdge"; }
249 249
250 const GrAttribute* inPosition() const { return fInPosition; } 250 const Attribute* inPosition() const { return fInPosition; }
251 const GrAttribute* inEllipseOffset() const { return fInEllipseOffset; } 251 const Attribute* inEllipseOffset() const { return fInEllipseOffset; }
252 const GrAttribute* inEllipseRadii() const { return fInEllipseRadii; } 252 const Attribute* inEllipseRadii() const { return fInEllipseRadii; }
253 253
254 inline bool isStroked() const { return fStroke; } 254 inline bool isStroked() const { return fStroke; }
255 255
256 class GLProcessor : public GrGLGeometryProcessor { 256 class GLProcessor : public GrGLGeometryProcessor {
257 public: 257 public:
258 GLProcessor(const GrGeometryProcessor&, 258 GLProcessor(const GrGeometryProcessor&,
259 const GrBatchTracker&) 259 const GrBatchTracker&)
260 : fColor(GrColor_ILLEGAL) {} 260 : fColor(GrColor_ILLEGAL) {}
261 261
262 void onEmitCode(EmitArgs& args) SK_OVERRIDE { 262 void onEmitCode(EmitArgs& args) SK_OVERRIDE {
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords, 377 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords,
378 that, theirs.fUsesLocalCoords) && 378 that, theirs.fUsesLocalCoords) &&
379 CanCombineOutput(mine.fInputColorType, mine.fColor, 379 CanCombineOutput(mine.fInputColorType, mine.fColor,
380 theirs.fInputColorType, theirs.fColor); 380 theirs.fInputColorType, theirs.fColor);
381 } 381 }
382 382
383 private: 383 private:
384 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) 384 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
385 : INHERITED(color, SkMatrix::I(), localMatrix) { 385 : INHERITED(color, SkMatrix::I(), localMatrix) {
386 this->initClassID<EllipseEdgeEffect>(); 386 this->initClassID<EllipseEdgeEffect>();
387 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 387 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
388 fInEllipseOffset = &this->addVertexAttrib(GrAttribute("inEllipseOffset", 388 fInEllipseOffset = &this->addVertexAttrib(Attribute("inEllipseOffset",
389 kVec2f_GrVertexAtt ribType)); 389 kVec2f_GrVertexAtt ribType));
390 fInEllipseRadii = &this->addVertexAttrib(GrAttribute("inEllipseRadii", 390 fInEllipseRadii = &this->addVertexAttrib(Attribute("inEllipseRadii",
391 kVec4f_GrVertexAttr ibType)); 391 kVec4f_GrVertexAttr ibType));
392 fStroke = stroke; 392 fStroke = stroke;
393 } 393 }
394 394
395 bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 395 bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
396 const EllipseEdgeEffect& eee = other.cast<EllipseEdgeEffect>(); 396 const EllipseEdgeEffect& eee = other.cast<EllipseEdgeEffect>();
397 return eee.fStroke == fStroke; 397 return eee.fStroke == fStroke;
398 } 398 }
399 399
400 void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERR IDE { 400 void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERR IDE {
401 out->setUnknownSingleComponent(); 401 out->setUnknownSingleComponent();
402 } 402 }
403 403
404 struct BatchTracker { 404 struct BatchTracker {
405 GrGPInput fInputColorType; 405 GrGPInput fInputColorType;
406 GrColor fColor; 406 GrColor fColor;
407 bool fUsesLocalCoords; 407 bool fUsesLocalCoords;
408 }; 408 };
409 409
410 const GrAttribute* fInPosition; 410 const Attribute* fInPosition;
411 const GrAttribute* fInEllipseOffset; 411 const Attribute* fInEllipseOffset;
412 const GrAttribute* fInEllipseRadii; 412 const Attribute* fInEllipseRadii;
413 bool fStroke; 413 bool fStroke;
414 414
415 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 415 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
416 416
417 typedef GrGeometryProcessor INHERITED; 417 typedef GrGeometryProcessor INHERITED;
418 }; 418 };
419 419
420 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(EllipseEdgeEffect); 420 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(EllipseEdgeEffect);
421 421
422 GrGeometryProcessor* EllipseEdgeEffect::TestCreate(SkRandom* random, 422 GrGeometryProcessor* EllipseEdgeEffect::TestCreate(SkRandom* random,
(...skipping 21 matching lines...) Expand all
444 enum Mode { kStroke = 0, kHairline, kFill }; 444 enum Mode { kStroke = 0, kHairline, kFill };
445 445
446 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix , Mode mode) { 446 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix , Mode mode) {
447 return SkNEW_ARGS(DIEllipseEdgeEffect, (color, viewMatrix, mode)); 447 return SkNEW_ARGS(DIEllipseEdgeEffect, (color, viewMatrix, mode));
448 } 448 }
449 449
450 virtual ~DIEllipseEdgeEffect() {} 450 virtual ~DIEllipseEdgeEffect() {}
451 451
452 const char* name() const SK_OVERRIDE { return "DIEllipseEdge"; } 452 const char* name() const SK_OVERRIDE { return "DIEllipseEdge"; }
453 453
454 const GrAttribute* inPosition() const { return fInPosition; } 454 const Attribute* inPosition() const { return fInPosition; }
455 const GrAttribute* inEllipseOffsets0() const { return fInEllipseOffsets0; } 455 const Attribute* inEllipseOffsets0() const { return fInEllipseOffsets0; }
456 const GrAttribute* inEllipseOffsets1() const { return fInEllipseOffsets1; } 456 const Attribute* inEllipseOffsets1() const { return fInEllipseOffsets1; }
457 457
458 inline Mode getMode() const { return fMode; } 458 inline Mode getMode() const { return fMode; }
459 459
460 class GLProcessor : public GrGLGeometryProcessor { 460 class GLProcessor : public GrGLGeometryProcessor {
461 public: 461 public:
462 GLProcessor(const GrGeometryProcessor&, 462 GLProcessor(const GrGeometryProcessor&,
463 const GrBatchTracker&) 463 const GrBatchTracker&)
464 : fColor(GrColor_ILLEGAL) {} 464 : fColor(GrColor_ILLEGAL) {}
465 465
466 void onEmitCode(EmitArgs& args) SK_OVERRIDE { 466 void onEmitCode(EmitArgs& args) SK_OVERRIDE {
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords, 596 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords,
597 that, theirs.fUsesLocalCoords) && 597 that, theirs.fUsesLocalCoords) &&
598 CanCombineOutput(mine.fInputColorType, mine.fColor, 598 CanCombineOutput(mine.fInputColorType, mine.fColor,
599 theirs.fInputColorType, theirs.fColor); 599 theirs.fInputColorType, theirs.fColor);
600 } 600 }
601 601
602 private: 602 private:
603 DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode) 603 DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode)
604 : INHERITED(color, viewMatrix) { 604 : INHERITED(color, viewMatrix) {
605 this->initClassID<DIEllipseEdgeEffect>(); 605 this->initClassID<DIEllipseEdgeEffect>();
606 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 606 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
607 fInEllipseOffsets0 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s0", 607 fInEllipseOffsets0 = &this->addVertexAttrib(Attribute("inEllipseOffsets0 ",
608 kVec2f_GrVertexA ttribType)); 608 kVec2f_GrVertexA ttribType));
609 fInEllipseOffsets1 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s1", 609 fInEllipseOffsets1 = &this->addVertexAttrib(Attribute("inEllipseOffsets1 ",
610 kVec2f_GrVertexA ttribType)); 610 kVec2f_GrVertexA ttribType));
611 fMode = mode; 611 fMode = mode;
612 } 612 }
613 613
614 bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 614 bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
615 const DIEllipseEdgeEffect& eee = other.cast<DIEllipseEdgeEffect>(); 615 const DIEllipseEdgeEffect& eee = other.cast<DIEllipseEdgeEffect>();
616 return eee.fMode == fMode; 616 return eee.fMode == fMode;
617 } 617 }
618 618
619 void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERR IDE { 619 void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERR IDE {
620 out->setUnknownSingleComponent(); 620 out->setUnknownSingleComponent();
621 } 621 }
622 622
623 struct BatchTracker { 623 struct BatchTracker {
624 GrGPInput fInputColorType; 624 GrGPInput fInputColorType;
625 GrColor fColor; 625 GrColor fColor;
626 bool fUsesLocalCoords; 626 bool fUsesLocalCoords;
627 }; 627 };
628 628
629 const GrAttribute* fInPosition; 629 const Attribute* fInPosition;
630 const GrAttribute* fInEllipseOffsets0; 630 const Attribute* fInEllipseOffsets0;
631 const GrAttribute* fInEllipseOffsets1; 631 const Attribute* fInEllipseOffsets1;
632 Mode fMode; 632 Mode fMode;
633 633
634 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 634 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
635 635
636 typedef GrGeometryProcessor INHERITED; 636 typedef GrGeometryProcessor INHERITED;
637 }; 637 };
638 638
639 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DIEllipseEdgeEffect); 639 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DIEllipseEdgeEffect);
640 640
641 GrGeometryProcessor* DIEllipseEdgeEffect::TestCreate(SkRandom* random, 641 GrGeometryProcessor* DIEllipseEdgeEffect::TestCreate(SkRandom* random,
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
1410 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 : 1410 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 :
1411 SK_ARRAY_COUNT(gRRectIndices); 1411 SK_ARRAY_COUNT(gRRectIndices);
1412 target->setIndexSourceToBuffer(indexBuffer); 1412 target->setIndexSourceToBuffer(indexBuffer);
1413 target->drawIndexedInstances(drawState, effect, kTriangles_GrPrimitiveTy pe, 1, 16, indexCnt, 1413 target->drawIndexedInstances(drawState, effect, kTriangles_GrPrimitiveTy pe, 1, 16, indexCnt,
1414 &bounds); 1414 &bounds);
1415 } 1415 }
1416 1416
1417 target->resetIndexSource(); 1417 target->resetIndexSource();
1418 return true; 1418 return true;
1419 } 1419 }
OLDNEW
« no previous file with comments | « src/gpu/GrOptDrawState.cpp ('k') | src/gpu/effects/GrBezierEffect.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698