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

Side by Side Diff: src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp

Issue 1266633003: Added registerChild; transforms, textures, glKey automatically handled. (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: refactored to onGetGLProcessorKey; removed emitSamplers specialized template; fixed nits Created 5 years, 4 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/effects/gradients/SkSweepGradient.cpp ('k') | src/gpu/GrProcessor.cpp » ('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 /* 2 /*
3 * Copyright 2014 Google Inc. 3 * Copyright 2014 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 "SkTwoPointConicalGradient_gpu.h" 9 #include "SkTwoPointConicalGradient_gpu.h"
10 10
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 SkShader::TileMode tm) { 65 SkShader::TileMode tm) {
66 return SkNEW_ARGS(Edge2PtConicalEffect, (ctx, procDataManager, shader, m atrix, tm)); 66 return SkNEW_ARGS(Edge2PtConicalEffect, (ctx, procDataManager, shader, m atrix, tm));
67 } 67 }
68 68
69 virtual ~Edge2PtConicalEffect() {} 69 virtual ~Edge2PtConicalEffect() {}
70 70
71 const char* name() const override { 71 const char* name() const override {
72 return "Two-Point Conical Gradient Edge Touching"; 72 return "Two-Point Conical Gradient Edge Touching";
73 } 73 }
74 74
75 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over ride;
76
77 GrGLFragmentProcessor* createGLInstance() const override; 75 GrGLFragmentProcessor* createGLInstance() const override;
78 76
79 // The radial gradient parameters can collapse to a linear (instead of quadr atic) equation. 77 // The radial gradient parameters can collapse to a linear (instead of quadr atic) equation.
80 SkScalar center() const { return fCenterX1; } 78 SkScalar center() const { return fCenterX1; }
81 SkScalar diffRadius() const { return fDiffRadius; } 79 SkScalar diffRadius() const { return fDiffRadius; }
82 SkScalar radius() const { return fRadius0; } 80 SkScalar radius() const { return fRadius0; }
83 81
84 private: 82 private:
83 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride;
84
85 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 85 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
86 const Edge2PtConicalEffect& s = sBase.cast<Edge2PtConicalEffect>(); 86 const Edge2PtConicalEffect& s = sBase.cast<Edge2PtConicalEffect>();
87 return (INHERITED::onIsEqual(sBase) && 87 return (INHERITED::onIsEqual(sBase) &&
88 this->fCenterX1 == s.fCenterX1 && 88 this->fCenterX1 == s.fCenterX1 &&
89 this->fRadius0 == s.fRadius0 && 89 this->fRadius0 == s.fRadius0 &&
90 this->fDiffRadius == s.fDiffRadius); 90 this->fDiffRadius == s.fDiffRadius);
91 } 91 }
92 92
93 Edge2PtConicalEffect(GrContext* ctx, 93 Edge2PtConicalEffect(GrContext* ctx,
94 GrProcessorDataManager* procDataManager, 94 GrProcessorDataManager* procDataManager,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 SkScalar fCachedRadius; 161 SkScalar fCachedRadius;
162 SkScalar fCachedDiffRadius; 162 SkScalar fCachedDiffRadius;
163 163
164 // @} 164 // @}
165 165
166 private: 166 private:
167 typedef GrGLGradientEffect INHERITED; 167 typedef GrGLGradientEffect INHERITED;
168 168
169 }; 169 };
170 170
171 void Edge2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, 171 void Edge2PtConicalEffect::onGetGLProcessorKey(const GrGLSLCaps& caps,
172 GrProcessorKeyBuilder* b) const { 172 GrProcessorKeyBuilder* b) const {
173 GLEdge2PtConicalEffect::GenKey(*this, caps, b); 173 GLEdge2PtConicalEffect::GenKey(*this, caps, b);
174 } 174 }
175 175
176 GrGLFragmentProcessor* Edge2PtConicalEffect::createGLInstance() const { 176 GrGLFragmentProcessor* Edge2PtConicalEffect::createGLInstance() const {
177 return SkNEW_ARGS(GLEdge2PtConicalEffect, (*this)); 177 return SkNEW_ARGS(GLEdge2PtConicalEffect, (*this));
178 } 178 }
179 179
180 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Edge2PtConicalEffect); 180 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Edge2PtConicalEffect);
181 181
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 return SkNEW_ARGS(FocalOutside2PtConicalEffect, (ctx, procDataManager, s hader, matrix, tm, 378 return SkNEW_ARGS(FocalOutside2PtConicalEffect, (ctx, procDataManager, s hader, matrix, tm,
379 focalX)); 379 focalX));
380 } 380 }
381 381
382 virtual ~FocalOutside2PtConicalEffect() { } 382 virtual ~FocalOutside2PtConicalEffect() { }
383 383
384 const char* name() const override { 384 const char* name() const override {
385 return "Two-Point Conical Gradient Focal Outside"; 385 return "Two-Point Conical Gradient Focal Outside";
386 } 386 }
387 387
388 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over ride;
389
390 GrGLFragmentProcessor* createGLInstance() const override; 388 GrGLFragmentProcessor* createGLInstance() const override;
391 389
392 bool isFlipped() const { return fIsFlipped; } 390 bool isFlipped() const { return fIsFlipped; }
393 SkScalar focal() const { return fFocalX; } 391 SkScalar focal() const { return fFocalX; }
394 392
395 private: 393 private:
394 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride;
395
396 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 396 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
397 const FocalOutside2PtConicalEffect& s = sBase.cast<FocalOutside2PtConica lEffect>(); 397 const FocalOutside2PtConicalEffect& s = sBase.cast<FocalOutside2PtConica lEffect>();
398 return (INHERITED::onIsEqual(sBase) && 398 return (INHERITED::onIsEqual(sBase) &&
399 this->fFocalX == s.fFocalX && 399 this->fFocalX == s.fFocalX &&
400 this->fIsFlipped == s.fIsFlipped); 400 this->fIsFlipped == s.fIsFlipped);
401 } 401 }
402 402
403 FocalOutside2PtConicalEffect(GrContext* ctx, 403 FocalOutside2PtConicalEffect(GrContext* ctx,
404 GrProcessorDataManager* procDataManager, 404 GrProcessorDataManager* procDataManager,
405 const SkTwoPointConicalGradient& shader, 405 const SkTwoPointConicalGradient& shader,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 443
444 SkScalar fCachedFocal; 444 SkScalar fCachedFocal;
445 445
446 // @} 446 // @}
447 447
448 private: 448 private:
449 typedef GrGLGradientEffect INHERITED; 449 typedef GrGLGradientEffect INHERITED;
450 450
451 }; 451 };
452 452
453 void FocalOutside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, 453 void FocalOutside2PtConicalEffect::onGetGLProcessorKey(const GrGLSLCaps& caps,
454 GrProcessorKeyBuilder* b) c onst { 454 GrProcessorKeyBuilder* b) c onst {
455 GLFocalOutside2PtConicalEffect::GenKey(*this, caps, b); 455 GLFocalOutside2PtConicalEffect::GenKey(*this, caps, b);
456 } 456 }
457 457
458 GrGLFragmentProcessor* FocalOutside2PtConicalEffect::createGLInstance() const { 458 GrGLFragmentProcessor* FocalOutside2PtConicalEffect::createGLInstance() const {
459 return SkNEW_ARGS(GLFocalOutside2PtConicalEffect, (*this)); 459 return SkNEW_ARGS(GLFocalOutside2PtConicalEffect, (*this));
460 } 460 }
461 461
462 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalOutside2PtConicalEffect); 462 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalOutside2PtConicalEffect);
463 463
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 return SkNEW_ARGS(FocalInside2PtConicalEffect, (ctx, procDataManager, sh ader, matrix, tm, 594 return SkNEW_ARGS(FocalInside2PtConicalEffect, (ctx, procDataManager, sh ader, matrix, tm,
595 focalX)); 595 focalX));
596 } 596 }
597 597
598 virtual ~FocalInside2PtConicalEffect() {} 598 virtual ~FocalInside2PtConicalEffect() {}
599 599
600 const char* name() const override { 600 const char* name() const override {
601 return "Two-Point Conical Gradient Focal Inside"; 601 return "Two-Point Conical Gradient Focal Inside";
602 } 602 }
603 603
604 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over ride;
605
606 GrGLFragmentProcessor* createGLInstance() const override; 604 GrGLFragmentProcessor* createGLInstance() const override;
607 605
608 SkScalar focal() const { return fFocalX; } 606 SkScalar focal() const { return fFocalX; }
609 607
610 typedef GLFocalInside2PtConicalEffect GLProcessor; 608 typedef GLFocalInside2PtConicalEffect GLProcessor;
611 609
612 private: 610 private:
611 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride;
612
613 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 613 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
614 const FocalInside2PtConicalEffect& s = sBase.cast<FocalInside2PtConicalE ffect>(); 614 const FocalInside2PtConicalEffect& s = sBase.cast<FocalInside2PtConicalE ffect>();
615 return (INHERITED::onIsEqual(sBase) && 615 return (INHERITED::onIsEqual(sBase) &&
616 this->fFocalX == s.fFocalX); 616 this->fFocalX == s.fFocalX);
617 } 617 }
618 618
619 FocalInside2PtConicalEffect(GrContext* ctx, 619 FocalInside2PtConicalEffect(GrContext* ctx,
620 GrProcessorDataManager* procDataManager, 620 GrProcessorDataManager* procDataManager,
621 const SkTwoPointConicalGradient& shader, 621 const SkTwoPointConicalGradient& shader,
622 const SkMatrix& matrix, 622 const SkMatrix& matrix,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 654
655 SkScalar fCachedFocal; 655 SkScalar fCachedFocal;
656 656
657 // @} 657 // @}
658 658
659 private: 659 private:
660 typedef GrGLGradientEffect INHERITED; 660 typedef GrGLGradientEffect INHERITED;
661 661
662 }; 662 };
663 663
664 void FocalInside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, 664 void FocalInside2PtConicalEffect::onGetGLProcessorKey(const GrGLSLCaps& caps,
665 GrProcessorKeyBuilder* b) const { 665 GrProcessorKeyBuilder* b) const {
666 GLFocalInside2PtConicalEffect::GenKey(*this, caps, b); 666 GLFocalInside2PtConicalEffect::GenKey(*this, caps, b);
667 } 667 }
668 668
669 GrGLFragmentProcessor* FocalInside2PtConicalEffect::createGLInstance() const { 669 GrGLFragmentProcessor* FocalInside2PtConicalEffect::createGLInstance() const {
670 return SkNEW_ARGS(GLFocalInside2PtConicalEffect, (*this)); 670 return SkNEW_ARGS(GLFocalInside2PtConicalEffect, (*this));
671 } 671 }
672 672
673 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalInside2PtConicalEffect); 673 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalInside2PtConicalEffect);
674 674
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 SkShader::TileMode tm, 830 SkShader::TileMode tm,
831 const CircleConicalInfo& info) { 831 const CircleConicalInfo& info) {
832 return SkNEW_ARGS(CircleInside2PtConicalEffect, (ctx, procDataManager, s hader, matrix, tm, 832 return SkNEW_ARGS(CircleInside2PtConicalEffect, (ctx, procDataManager, s hader, matrix, tm,
833 info)); 833 info));
834 } 834 }
835 835
836 virtual ~CircleInside2PtConicalEffect() {} 836 virtual ~CircleInside2PtConicalEffect() {}
837 837
838 const char* name() const override { return "Two-Point Conical Gradient Insid e"; } 838 const char* name() const override { return "Two-Point Conical Gradient Insid e"; }
839 839
840 virtual void getGLProcessorKey(const GrGLSLCaps& caps,
841 GrProcessorKeyBuilder* b) const override;
842
843 GrGLFragmentProcessor* createGLInstance() const override; 840 GrGLFragmentProcessor* createGLInstance() const override;
844 841
845 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } 842 SkScalar centerX() const { return fInfo.fCenterEnd.fX; }
846 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } 843 SkScalar centerY() const { return fInfo.fCenterEnd.fY; }
847 SkScalar A() const { return fInfo.fA; } 844 SkScalar A() const { return fInfo.fA; }
848 SkScalar B() const { return fInfo.fB; } 845 SkScalar B() const { return fInfo.fB; }
849 SkScalar C() const { return fInfo.fC; } 846 SkScalar C() const { return fInfo.fC; }
850 847
851 private: 848 private:
849 virtual void onGetGLProcessorKey(const GrGLSLCaps& caps,
850 GrProcessorKeyBuilder* b) const override;
851
852 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 852 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
853 const CircleInside2PtConicalEffect& s = sBase.cast<CircleInside2PtConica lEffect>(); 853 const CircleInside2PtConicalEffect& s = sBase.cast<CircleInside2PtConica lEffect>();
854 return (INHERITED::onIsEqual(sBase) && 854 return (INHERITED::onIsEqual(sBase) &&
855 this->fInfo.fCenterEnd == s.fInfo.fCenterEnd && 855 this->fInfo.fCenterEnd == s.fInfo.fCenterEnd &&
856 this->fInfo.fA == s.fInfo.fA && 856 this->fInfo.fA == s.fInfo.fA &&
857 this->fInfo.fB == s.fInfo.fB && 857 this->fInfo.fB == s.fInfo.fB &&
858 this->fInfo.fC == s.fInfo.fC); 858 this->fInfo.fC == s.fInfo.fC);
859 } 859 }
860 860
861 CircleInside2PtConicalEffect(GrContext* ctx, 861 CircleInside2PtConicalEffect(GrContext* ctx,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 SkScalar fCachedB; 901 SkScalar fCachedB;
902 SkScalar fCachedC; 902 SkScalar fCachedC;
903 903
904 // @} 904 // @}
905 905
906 private: 906 private:
907 typedef GrGLGradientEffect INHERITED; 907 typedef GrGLGradientEffect INHERITED;
908 908
909 }; 909 };
910 910
911 void CircleInside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, 911 void CircleInside2PtConicalEffect::onGetGLProcessorKey(const GrGLSLCaps& caps,
912 GrProcessorKeyBuilder* b) c onst { 912 GrProcessorKeyBuilder* b) c onst {
913 GLCircleInside2PtConicalEffect::GenKey(*this, caps, b); 913 GLCircleInside2PtConicalEffect::GenKey(*this, caps, b);
914 } 914 }
915 915
916 GrGLFragmentProcessor* CircleInside2PtConicalEffect::createGLInstance() const { 916 GrGLFragmentProcessor* CircleInside2PtConicalEffect::createGLInstance() const {
917 return SkNEW_ARGS(GLCircleInside2PtConicalEffect, (*this)); 917 return SkNEW_ARGS(GLCircleInside2PtConicalEffect, (*this));
918 } 918 }
919 919
920 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleInside2PtConicalEffect); 920 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleInside2PtConicalEffect);
921 921
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 SkShader::TileMode tm, 1046 SkShader::TileMode tm,
1047 const CircleConicalInfo& info) { 1047 const CircleConicalInfo& info) {
1048 return SkNEW_ARGS(CircleOutside2PtConicalEffect, (ctx, procDataManager, shader, matrix, 1048 return SkNEW_ARGS(CircleOutside2PtConicalEffect, (ctx, procDataManager, shader, matrix,
1049 tm, info)); 1049 tm, info));
1050 } 1050 }
1051 1051
1052 virtual ~CircleOutside2PtConicalEffect() {} 1052 virtual ~CircleOutside2PtConicalEffect() {}
1053 1053
1054 const char* name() const override { return "Two-Point Conical Gradient Outsi de"; } 1054 const char* name() const override { return "Two-Point Conical Gradient Outsi de"; }
1055 1055
1056 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over ride;
1057
1058 GrGLFragmentProcessor* createGLInstance() const override; 1056 GrGLFragmentProcessor* createGLInstance() const override;
1059 1057
1060 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } 1058 SkScalar centerX() const { return fInfo.fCenterEnd.fX; }
1061 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } 1059 SkScalar centerY() const { return fInfo.fCenterEnd.fY; }
1062 SkScalar A() const { return fInfo.fA; } 1060 SkScalar A() const { return fInfo.fA; }
1063 SkScalar B() const { return fInfo.fB; } 1061 SkScalar B() const { return fInfo.fB; }
1064 SkScalar C() const { return fInfo.fC; } 1062 SkScalar C() const { return fInfo.fC; }
1065 SkScalar tLimit() const { return fTLimit; } 1063 SkScalar tLimit() const { return fTLimit; }
1066 bool isFlipped() const { return fIsFlipped; } 1064 bool isFlipped() const { return fIsFlipped; }
1067 1065
1068 private: 1066 private:
1067 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride;
1068
1069 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 1069 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
1070 const CircleOutside2PtConicalEffect& s = sBase.cast<CircleOutside2PtConi calEffect>(); 1070 const CircleOutside2PtConicalEffect& s = sBase.cast<CircleOutside2PtConi calEffect>();
1071 return (INHERITED::onIsEqual(sBase) && 1071 return (INHERITED::onIsEqual(sBase) &&
1072 this->fInfo.fCenterEnd == s.fInfo.fCenterEnd && 1072 this->fInfo.fCenterEnd == s.fInfo.fCenterEnd &&
1073 this->fInfo.fA == s.fInfo.fA && 1073 this->fInfo.fA == s.fInfo.fA &&
1074 this->fInfo.fB == s.fInfo.fB && 1074 this->fInfo.fB == s.fInfo.fB &&
1075 this->fInfo.fC == s.fInfo.fC && 1075 this->fInfo.fC == s.fInfo.fC &&
1076 this->fTLimit == s.fTLimit && 1076 this->fTLimit == s.fTLimit &&
1077 this->fIsFlipped == s.fIsFlipped); 1077 this->fIsFlipped == s.fIsFlipped);
1078 } 1078 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 SkScalar fCachedC; 1132 SkScalar fCachedC;
1133 SkScalar fCachedTLimit; 1133 SkScalar fCachedTLimit;
1134 1134
1135 // @} 1135 // @}
1136 1136
1137 private: 1137 private:
1138 typedef GrGLGradientEffect INHERITED; 1138 typedef GrGLGradientEffect INHERITED;
1139 1139
1140 }; 1140 };
1141 1141
1142 void CircleOutside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, 1142 void CircleOutside2PtConicalEffect::onGetGLProcessorKey(const GrGLSLCaps& caps,
1143 GrProcessorKeyBuilder* b) const { 1143 GrProcessorKeyBuilder* b) const {
1144 GLCircleOutside2PtConicalEffect::GenKey(*this, caps, b); 1144 GLCircleOutside2PtConicalEffect::GenKey(*this, caps, b);
1145 } 1145 }
1146 1146
1147 GrGLFragmentProcessor* CircleOutside2PtConicalEffect::createGLInstance() const { 1147 GrGLFragmentProcessor* CircleOutside2PtConicalEffect::createGLInstance() const {
1148 return SkNEW_ARGS(GLCircleOutside2PtConicalEffect, (*this)); 1148 return SkNEW_ARGS(GLCircleOutside2PtConicalEffect, (*this));
1149 } 1149 }
1150 1150
1151 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleOutside2PtConicalEffect); 1151 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleOutside2PtConicalEffect);
1152 1152
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
1334 } else if (type == kEdge_ConicalType) { 1334 } else if (type == kEdge_ConicalType) {
1335 set_matrix_edge_conical(shader, &matrix); 1335 set_matrix_edge_conical(shader, &matrix);
1336 return Edge2PtConicalEffect::Create(ctx, procDataManager, shader, matrix , tm); 1336 return Edge2PtConicalEffect::Create(ctx, procDataManager, shader, matrix , tm);
1337 } else { 1337 } else {
1338 return CircleOutside2PtConicalEffect::Create(ctx, procDataManager, shade r, matrix, tm, 1338 return CircleOutside2PtConicalEffect::Create(ctx, procDataManager, shade r, matrix, tm,
1339 info); 1339 info);
1340 } 1340 }
1341 } 1341 }
1342 1342
1343 #endif 1343 #endif
OLDNEW
« no previous file with comments | « src/effects/gradients/SkSweepGradient.cpp ('k') | src/gpu/GrProcessor.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698