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

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

Issue 1109863004: Use GLSLCaps for creating processor keys and GLSL-specific programs (Closed) Base URL: https://chromium.googlesource.com/skia@master
Patch Set: Created 5 years, 8 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 /* 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 SkShader::TileMode tm) { 63 SkShader::TileMode tm) {
64 return SkNEW_ARGS(Edge2PtConicalEffect, (ctx, shader, matrix, tm)); 64 return SkNEW_ARGS(Edge2PtConicalEffect, (ctx, shader, matrix, tm));
65 } 65 }
66 66
67 virtual ~Edge2PtConicalEffect() {} 67 virtual ~Edge2PtConicalEffect() {}
68 68
69 const char* name() const override { 69 const char* name() const override {
70 return "Two-Point Conical Gradient Edge Touching"; 70 return "Two-Point Conical Gradient Edge Touching";
71 } 71 }
72 72
73 void getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder*) const overri de; 73 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over ride;
74 74
75 GrGLFragmentProcessor* createGLInstance() const override; 75 GrGLFragmentProcessor* createGLInstance() const override;
76 76
77 // 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.
78 SkScalar center() const { return fCenterX1; } 78 SkScalar center() const { return fCenterX1; }
79 SkScalar diffRadius() const { return fDiffRadius; } 79 SkScalar diffRadius() const { return fDiffRadius; }
80 SkScalar radius() const { return fRadius0; } 80 SkScalar radius() const { return fRadius0; }
81 81
82 private: 82 private:
83 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 83 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 virtual ~GLEdge2PtConicalEffect() { } 142 virtual ~GLEdge2PtConicalEffect() { }
143 143
144 virtual void emitCode(GrGLFPBuilder*, 144 virtual void emitCode(GrGLFPBuilder*,
145 const GrFragmentProcessor&, 145 const GrFragmentProcessor&,
146 const char* outputColor, 146 const char* outputColor,
147 const char* inputColor, 147 const char* inputColor,
148 const TransformedCoordsArray&, 148 const TransformedCoordsArray&,
149 const TextureSamplerArray&) override; 149 const TextureSamplerArray&) override;
150 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; 150 void setData(const GrGLProgramDataManager&, const GrProcessor&) override;
151 151
152 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB uilder* b); 152 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe yBuilder* b);
153 153
154 protected: 154 protected:
155 UniformHandle fParamUni; 155 UniformHandle fParamUni;
156 156
157 const char* fVSVaryingName; 157 const char* fVSVaryingName;
158 const char* fFSVaryingName; 158 const char* fFSVaryingName;
159 159
160 // @{ 160 // @{
161 /// Values last uploaded as uniforms 161 /// Values last uploaded as uniforms
162 162
163 SkScalar fCachedRadius; 163 SkScalar fCachedRadius;
164 SkScalar fCachedDiffRadius; 164 SkScalar fCachedDiffRadius;
165 165
166 // @} 166 // @}
167 167
168 private: 168 private:
169 typedef GrGLGradientEffect INHERITED; 169 typedef GrGLGradientEffect INHERITED;
170 170
171 }; 171 };
172 172
173 void Edge2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, 173 void Edge2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps,
174 GrProcessorKeyBuilder* b) const { 174 GrProcessorKeyBuilder* b) const {
175 GLEdge2PtConicalEffect::GenKey(*this, caps, b); 175 GLEdge2PtConicalEffect::GenKey(*this, caps, b);
176 } 176 }
177 177
178 GrGLFragmentProcessor* Edge2PtConicalEffect::createGLInstance() const { 178 GrGLFragmentProcessor* Edge2PtConicalEffect::createGLInstance() const {
179 return SkNEW_ARGS(GLEdge2PtConicalEffect, (*this)); 179 return SkNEW_ARGS(GLEdge2PtConicalEffect, (*this));
180 } 180 }
181 181
182 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Edge2PtConicalEffect); 182 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Edge2PtConicalEffect);
183 183
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 SkScalarToFloat(diffRadius) 302 SkScalarToFloat(diffRadius)
303 }; 303 };
304 304
305 pdman.set1fv(fParamUni, 3, values); 305 pdman.set1fv(fParamUni, 3, values);
306 fCachedRadius = radius0; 306 fCachedRadius = radius0;
307 fCachedDiffRadius = diffRadius; 307 fCachedDiffRadius = diffRadius;
308 } 308 }
309 } 309 }
310 310
311 void GLEdge2PtConicalEffect::GenKey(const GrProcessor& processor, 311 void GLEdge2PtConicalEffect::GenKey(const GrProcessor& processor,
312 const GrGLCaps&, GrProcessorKeyBuilder* b) { 312 const GrGLSLCaps&, GrProcessorKeyBuilder* b) {
313 b->add32(GenBaseGradientKey(processor)); 313 b->add32(GenBaseGradientKey(processor));
314 } 314 }
315 315
316 ////////////////////////////////////////////////////////////////////////////// 316 //////////////////////////////////////////////////////////////////////////////
317 // Focal Conical Gradients 317 // Focal Conical Gradients
318 ////////////////////////////////////////////////////////////////////////////// 318 //////////////////////////////////////////////////////////////////////////////
319 319
320 static ConicalType set_matrix_focal_conical(const SkTwoPointConicalGradient& sha der, 320 static ConicalType set_matrix_focal_conical(const SkTwoPointConicalGradient& sha der,
321 SkMatrix* invLMatrix, SkScalar* foca lX) { 321 SkMatrix* invLMatrix, SkScalar* foca lX) {
322 // Inverse of the current local matrix is passed in then, 322 // Inverse of the current local matrix is passed in then,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 SkScalar focalX) { 385 SkScalar focalX) {
386 return SkNEW_ARGS(FocalOutside2PtConicalEffect, (ctx, shader, matrix, tm , focalX)); 386 return SkNEW_ARGS(FocalOutside2PtConicalEffect, (ctx, shader, matrix, tm , focalX));
387 } 387 }
388 388
389 virtual ~FocalOutside2PtConicalEffect() { } 389 virtual ~FocalOutside2PtConicalEffect() { }
390 390
391 const char* name() const override { 391 const char* name() const override {
392 return "Two-Point Conical Gradient Focal Outside"; 392 return "Two-Point Conical Gradient Focal Outside";
393 } 393 }
394 394
395 void getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder*) const overri de; 395 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over ride;
396 396
397 GrGLFragmentProcessor* createGLInstance() const override; 397 GrGLFragmentProcessor* createGLInstance() const override;
398 398
399 bool isFlipped() const { return fIsFlipped; } 399 bool isFlipped() const { return fIsFlipped; }
400 SkScalar focal() const { return fFocalX; } 400 SkScalar focal() const { return fFocalX; }
401 401
402 private: 402 private:
403 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 403 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
404 const FocalOutside2PtConicalEffect& s = sBase.cast<FocalOutside2PtConica lEffect>(); 404 const FocalOutside2PtConicalEffect& s = sBase.cast<FocalOutside2PtConica lEffect>();
405 return (INHERITED::onIsEqual(sBase) && 405 return (INHERITED::onIsEqual(sBase) &&
(...skipping 24 matching lines...) Expand all
430 virtual ~GLFocalOutside2PtConicalEffect() { } 430 virtual ~GLFocalOutside2PtConicalEffect() { }
431 431
432 virtual void emitCode(GrGLFPBuilder*, 432 virtual void emitCode(GrGLFPBuilder*,
433 const GrFragmentProcessor&, 433 const GrFragmentProcessor&,
434 const char* outputColor, 434 const char* outputColor,
435 const char* inputColor, 435 const char* inputColor,
436 const TransformedCoordsArray&, 436 const TransformedCoordsArray&,
437 const TextureSamplerArray&) override; 437 const TextureSamplerArray&) override;
438 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; 438 void setData(const GrGLProgramDataManager&, const GrProcessor&) override;
439 439
440 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB uilder* b); 440 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe yBuilder* b);
441 441
442 protected: 442 protected:
443 UniformHandle fParamUni; 443 UniformHandle fParamUni;
444 444
445 const char* fVSVaryingName; 445 const char* fVSVaryingName;
446 const char* fFSVaryingName; 446 const char* fFSVaryingName;
447 447
448 bool fIsFlipped; 448 bool fIsFlipped;
449 449
450 // @{ 450 // @{
451 /// Values last uploaded as uniforms 451 /// Values last uploaded as uniforms
452 452
453 SkScalar fCachedFocal; 453 SkScalar fCachedFocal;
454 454
455 // @} 455 // @}
456 456
457 private: 457 private:
458 typedef GrGLGradientEffect INHERITED; 458 typedef GrGLGradientEffect INHERITED;
459 459
460 }; 460 };
461 461
462 void FocalOutside2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, 462 void FocalOutside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps,
463 GrProcessorKeyBuilder* b) c onst { 463 GrProcessorKeyBuilder* b) c onst {
464 GLFocalOutside2PtConicalEffect::GenKey(*this, caps, b); 464 GLFocalOutside2PtConicalEffect::GenKey(*this, caps, b);
465 } 465 }
466 466
467 GrGLFragmentProcessor* FocalOutside2PtConicalEffect::createGLInstance() const { 467 GrGLFragmentProcessor* FocalOutside2PtConicalEffect::createGLInstance() const {
468 return SkNEW_ARGS(GLFocalOutside2PtConicalEffect, (*this)); 468 return SkNEW_ARGS(GLFocalOutside2PtConicalEffect, (*this));
469 } 469 }
470 470
471 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalOutside2PtConicalEffect); 471 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalOutside2PtConicalEffect);
472 472
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 SkScalarToFloat(focal), 580 SkScalarToFloat(focal),
581 SkScalarToFloat(oneMinus2F), 581 SkScalarToFloat(oneMinus2F),
582 }; 582 };
583 583
584 pdman.set1fv(fParamUni, 2, values); 584 pdman.set1fv(fParamUni, 2, values);
585 fCachedFocal = focal; 585 fCachedFocal = focal;
586 } 586 }
587 } 587 }
588 588
589 void GLFocalOutside2PtConicalEffect::GenKey(const GrProcessor& processor, 589 void GLFocalOutside2PtConicalEffect::GenKey(const GrProcessor& processor,
590 const GrGLCaps&, GrProcessorKeyBuild er* b) { 590 const GrGLSLCaps&, GrProcessorKeyBui lder* b) {
591 uint32_t* key = b->add32n(2); 591 uint32_t* key = b->add32n(2);
592 key[0] = GenBaseGradientKey(processor); 592 key[0] = GenBaseGradientKey(processor);
593 key[1] = processor.cast<FocalOutside2PtConicalEffect>().isFlipped(); 593 key[1] = processor.cast<FocalOutside2PtConicalEffect>().isFlipped();
594 } 594 }
595 595
596 ////////////////////////////////////////////////////////////////////////////// 596 //////////////////////////////////////////////////////////////////////////////
597 597
598 class GLFocalInside2PtConicalEffect; 598 class GLFocalInside2PtConicalEffect;
599 599
600 class FocalInside2PtConicalEffect : public GrGradientEffect { 600 class FocalInside2PtConicalEffect : public GrGradientEffect {
601 public: 601 public:
602 602
603 static GrFragmentProcessor* Create(GrContext* ctx, 603 static GrFragmentProcessor* Create(GrContext* ctx,
604 const SkTwoPointConicalGradient& shader, 604 const SkTwoPointConicalGradient& shader,
605 const SkMatrix& matrix, 605 const SkMatrix& matrix,
606 SkShader::TileMode tm, 606 SkShader::TileMode tm,
607 SkScalar focalX) { 607 SkScalar focalX) {
608 return SkNEW_ARGS(FocalInside2PtConicalEffect, (ctx, shader, matrix, tm, focalX)); 608 return SkNEW_ARGS(FocalInside2PtConicalEffect, (ctx, shader, matrix, tm, focalX));
609 } 609 }
610 610
611 virtual ~FocalInside2PtConicalEffect() {} 611 virtual ~FocalInside2PtConicalEffect() {}
612 612
613 const char* name() const override { 613 const char* name() const override {
614 return "Two-Point Conical Gradient Focal Inside"; 614 return "Two-Point Conical Gradient Focal Inside";
615 } 615 }
616 616
617 void getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder*) const overri de; 617 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over ride;
618 618
619 GrGLFragmentProcessor* createGLInstance() const override; 619 GrGLFragmentProcessor* createGLInstance() const override;
620 620
621 SkScalar focal() const { return fFocalX; } 621 SkScalar focal() const { return fFocalX; }
622 622
623 typedef GLFocalInside2PtConicalEffect GLProcessor; 623 typedef GLFocalInside2PtConicalEffect GLProcessor;
624 624
625 private: 625 private:
626 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 626 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
627 const FocalInside2PtConicalEffect& s = sBase.cast<FocalInside2PtConicalE ffect>(); 627 const FocalInside2PtConicalEffect& s = sBase.cast<FocalInside2PtConicalE ffect>();
(...skipping 23 matching lines...) Expand all
651 virtual ~GLFocalInside2PtConicalEffect() {} 651 virtual ~GLFocalInside2PtConicalEffect() {}
652 652
653 virtual void emitCode(GrGLFPBuilder*, 653 virtual void emitCode(GrGLFPBuilder*,
654 const GrFragmentProcessor&, 654 const GrFragmentProcessor&,
655 const char* outputColor, 655 const char* outputColor,
656 const char* inputColor, 656 const char* inputColor,
657 const TransformedCoordsArray&, 657 const TransformedCoordsArray&,
658 const TextureSamplerArray&) override; 658 const TextureSamplerArray&) override;
659 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; 659 void setData(const GrGLProgramDataManager&, const GrProcessor&) override;
660 660
661 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB uilder* b); 661 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe yBuilder* b);
662 662
663 protected: 663 protected:
664 UniformHandle fFocalUni; 664 UniformHandle fFocalUni;
665 665
666 const char* fVSVaryingName; 666 const char* fVSVaryingName;
667 const char* fFSVaryingName; 667 const char* fFSVaryingName;
668 668
669 // @{ 669 // @{
670 /// Values last uploaded as uniforms 670 /// Values last uploaded as uniforms
671 671
672 SkScalar fCachedFocal; 672 SkScalar fCachedFocal;
673 673
674 // @} 674 // @}
675 675
676 private: 676 private:
677 typedef GrGLGradientEffect INHERITED; 677 typedef GrGLGradientEffect INHERITED;
678 678
679 }; 679 };
680 680
681 void FocalInside2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, 681 void FocalInside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps,
682 GrProcessorKeyBuilder* b) const { 682 GrProcessorKeyBuilder* b) const {
683 GLFocalInside2PtConicalEffect::GenKey(*this, caps, b); 683 GLFocalInside2PtConicalEffect::GenKey(*this, caps, b);
684 } 684 }
685 685
686 GrGLFragmentProcessor* FocalInside2PtConicalEffect::createGLInstance() const { 686 GrGLFragmentProcessor* FocalInside2PtConicalEffect::createGLInstance() const {
687 return SkNEW_ARGS(GLFocalInside2PtConicalEffect, (*this)); 687 return SkNEW_ARGS(GLFocalInside2PtConicalEffect, (*this));
688 } 688 }
689 689
690 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalInside2PtConicalEffect); 690 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalInside2PtConicalEffect);
691 691
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 const FocalInside2PtConicalEffect& data = processor.cast<FocalInside2PtConic alEffect>(); 769 const FocalInside2PtConicalEffect& data = processor.cast<FocalInside2PtConic alEffect>();
770 SkScalar focal = data.focal(); 770 SkScalar focal = data.focal();
771 771
772 if (fCachedFocal != focal) { 772 if (fCachedFocal != focal) {
773 pdman.set1f(fFocalUni, SkScalarToFloat(focal)); 773 pdman.set1f(fFocalUni, SkScalarToFloat(focal));
774 fCachedFocal = focal; 774 fCachedFocal = focal;
775 } 775 }
776 } 776 }
777 777
778 void GLFocalInside2PtConicalEffect::GenKey(const GrProcessor& processor, 778 void GLFocalInside2PtConicalEffect::GenKey(const GrProcessor& processor,
779 const GrGLCaps&, GrProcessorKeyBuilde r* b) { 779 const GrGLSLCaps&, GrProcessorKeyBuil der* b) {
780 b->add32(GenBaseGradientKey(processor)); 780 b->add32(GenBaseGradientKey(processor));
781 } 781 }
782 782
783 ////////////////////////////////////////////////////////////////////////////// 783 //////////////////////////////////////////////////////////////////////////////
784 // Circle Conical Gradients 784 // Circle Conical Gradients
785 ////////////////////////////////////////////////////////////////////////////// 785 //////////////////////////////////////////////////////////////////////////////
786 786
787 struct CircleConicalInfo { 787 struct CircleConicalInfo {
788 SkPoint fCenterEnd; 788 SkPoint fCenterEnd;
789 SkScalar fA; 789 SkScalar fA;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 const SkMatrix& matrix, 852 const SkMatrix& matrix,
853 SkShader::TileMode tm, 853 SkShader::TileMode tm,
854 const CircleConicalInfo& info) { 854 const CircleConicalInfo& info) {
855 return SkNEW_ARGS(CircleInside2PtConicalEffect, (ctx, shader, matrix, tm , info)); 855 return SkNEW_ARGS(CircleInside2PtConicalEffect, (ctx, shader, matrix, tm , info));
856 } 856 }
857 857
858 virtual ~CircleInside2PtConicalEffect() {} 858 virtual ~CircleInside2PtConicalEffect() {}
859 859
860 const char* name() const override { return "Two-Point Conical Gradient Insid e"; } 860 const char* name() const override { return "Two-Point Conical Gradient Insid e"; }
861 861
862 virtual void getGLProcessorKey(const GrGLCaps& caps, 862 virtual void getGLProcessorKey(const GrGLSLCaps& caps,
863 GrProcessorKeyBuilder* b) const override; 863 GrProcessorKeyBuilder* b) const override;
864 864
865 GrGLFragmentProcessor* createGLInstance() const override; 865 GrGLFragmentProcessor* createGLInstance() const override;
866 866
867 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } 867 SkScalar centerX() const { return fInfo.fCenterEnd.fX; }
868 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } 868 SkScalar centerY() const { return fInfo.fCenterEnd.fY; }
869 SkScalar A() const { return fInfo.fA; } 869 SkScalar A() const { return fInfo.fA; }
870 SkScalar B() const { return fInfo.fB; } 870 SkScalar B() const { return fInfo.fB; }
871 SkScalar C() const { return fInfo.fC; } 871 SkScalar C() const { return fInfo.fC; }
872 872
(...skipping 29 matching lines...) Expand all
902 virtual ~GLCircleInside2PtConicalEffect() {} 902 virtual ~GLCircleInside2PtConicalEffect() {}
903 903
904 virtual void emitCode(GrGLFPBuilder*, 904 virtual void emitCode(GrGLFPBuilder*,
905 const GrFragmentProcessor&, 905 const GrFragmentProcessor&,
906 const char* outputColor, 906 const char* outputColor,
907 const char* inputColor, 907 const char* inputColor,
908 const TransformedCoordsArray&, 908 const TransformedCoordsArray&,
909 const TextureSamplerArray&) override; 909 const TextureSamplerArray&) override;
910 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; 910 void setData(const GrGLProgramDataManager&, const GrProcessor&) override;
911 911
912 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB uilder* b); 912 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe yBuilder* b);
913 913
914 protected: 914 protected:
915 UniformHandle fCenterUni; 915 UniformHandle fCenterUni;
916 UniformHandle fParamUni; 916 UniformHandle fParamUni;
917 917
918 const char* fVSVaryingName; 918 const char* fVSVaryingName;
919 const char* fFSVaryingName; 919 const char* fFSVaryingName;
920 920
921 // @{ 921 // @{
922 /// Values last uploaded as uniforms 922 /// Values last uploaded as uniforms
923 923
924 SkScalar fCachedCenterX; 924 SkScalar fCachedCenterX;
925 SkScalar fCachedCenterY; 925 SkScalar fCachedCenterY;
926 SkScalar fCachedA; 926 SkScalar fCachedA;
927 SkScalar fCachedB; 927 SkScalar fCachedB;
928 SkScalar fCachedC; 928 SkScalar fCachedC;
929 929
930 // @} 930 // @}
931 931
932 private: 932 private:
933 typedef GrGLGradientEffect INHERITED; 933 typedef GrGLGradientEffect INHERITED;
934 934
935 }; 935 };
936 936
937 void CircleInside2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, 937 void CircleInside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps,
938 GrProcessorKeyBuilder* b) c onst { 938 GrProcessorKeyBuilder* b) c onst {
939 GLCircleInside2PtConicalEffect::GenKey(*this, caps, b); 939 GLCircleInside2PtConicalEffect::GenKey(*this, caps, b);
940 } 940 }
941 941
942 GrGLFragmentProcessor* CircleInside2PtConicalEffect::createGLInstance() const { 942 GrGLFragmentProcessor* CircleInside2PtConicalEffect::createGLInstance() const {
943 return SkNEW_ARGS(GLCircleInside2PtConicalEffect, (*this)); 943 return SkNEW_ARGS(GLCircleInside2PtConicalEffect, (*this));
944 } 944 }
945 945
946 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleInside2PtConicalEffect); 946 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleInside2PtConicalEffect);
947 947
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 1055
1056 fCachedCenterX = centerX; 1056 fCachedCenterX = centerX;
1057 fCachedCenterY = centerY; 1057 fCachedCenterY = centerY;
1058 fCachedA = A; 1058 fCachedA = A;
1059 fCachedB = B; 1059 fCachedB = B;
1060 fCachedC = C; 1060 fCachedC = C;
1061 } 1061 }
1062 } 1062 }
1063 1063
1064 void GLCircleInside2PtConicalEffect::GenKey(const GrProcessor& processor, 1064 void GLCircleInside2PtConicalEffect::GenKey(const GrProcessor& processor,
1065 const GrGLCaps&, GrProcessorKeyBuild er* b) { 1065 const GrGLSLCaps&, GrProcessorKeyBui lder* b) {
1066 b->add32(GenBaseGradientKey(processor)); 1066 b->add32(GenBaseGradientKey(processor));
1067 } 1067 }
1068 1068
1069 ////////////////////////////////////////////////////////////////////////////// 1069 //////////////////////////////////////////////////////////////////////////////
1070 1070
1071 class CircleOutside2PtConicalEffect : public GrGradientEffect { 1071 class CircleOutside2PtConicalEffect : public GrGradientEffect {
1072 public: 1072 public:
1073 1073
1074 static GrFragmentProcessor* Create(GrContext* ctx, 1074 static GrFragmentProcessor* Create(GrContext* ctx,
1075 const SkTwoPointConicalGradient& shader, 1075 const SkTwoPointConicalGradient& shader,
1076 const SkMatrix& matrix, 1076 const SkMatrix& matrix,
1077 SkShader::TileMode tm, 1077 SkShader::TileMode tm,
1078 const CircleConicalInfo& info) { 1078 const CircleConicalInfo& info) {
1079 return SkNEW_ARGS(CircleOutside2PtConicalEffect, (ctx, shader, matrix, t m, info)); 1079 return SkNEW_ARGS(CircleOutside2PtConicalEffect, (ctx, shader, matrix, t m, info));
1080 } 1080 }
1081 1081
1082 virtual ~CircleOutside2PtConicalEffect() {} 1082 virtual ~CircleOutside2PtConicalEffect() {}
1083 1083
1084 const char* name() const override { return "Two-Point Conical Gradient Outsi de"; } 1084 const char* name() const override { return "Two-Point Conical Gradient Outsi de"; }
1085 1085
1086 void getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder*) const overri de; 1086 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over ride;
1087 1087
1088 GrGLFragmentProcessor* createGLInstance() const override; 1088 GrGLFragmentProcessor* createGLInstance() const override;
1089 1089
1090 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } 1090 SkScalar centerX() const { return fInfo.fCenterEnd.fX; }
1091 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } 1091 SkScalar centerY() const { return fInfo.fCenterEnd.fY; }
1092 SkScalar A() const { return fInfo.fA; } 1092 SkScalar A() const { return fInfo.fA; }
1093 SkScalar B() const { return fInfo.fB; } 1093 SkScalar B() const { return fInfo.fB; }
1094 SkScalar C() const { return fInfo.fC; } 1094 SkScalar C() const { return fInfo.fC; }
1095 SkScalar tLimit() const { return fTLimit; } 1095 SkScalar tLimit() const { return fTLimit; }
1096 bool isFlipped() const { return fIsFlipped; } 1096 bool isFlipped() const { return fIsFlipped; }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 virtual ~GLCircleOutside2PtConicalEffect() {} 1139 virtual ~GLCircleOutside2PtConicalEffect() {}
1140 1140
1141 virtual void emitCode(GrGLFPBuilder*, 1141 virtual void emitCode(GrGLFPBuilder*,
1142 const GrFragmentProcessor&, 1142 const GrFragmentProcessor&,
1143 const char* outputColor, 1143 const char* outputColor,
1144 const char* inputColor, 1144 const char* inputColor,
1145 const TransformedCoordsArray&, 1145 const TransformedCoordsArray&,
1146 const TextureSamplerArray&) override; 1146 const TextureSamplerArray&) override;
1147 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; 1147 void setData(const GrGLProgramDataManager&, const GrProcessor&) override;
1148 1148
1149 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB uilder* b); 1149 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe yBuilder* b);
1150 1150
1151 protected: 1151 protected:
1152 UniformHandle fCenterUni; 1152 UniformHandle fCenterUni;
1153 UniformHandle fParamUni; 1153 UniformHandle fParamUni;
1154 1154
1155 const char* fVSVaryingName; 1155 const char* fVSVaryingName;
1156 const char* fFSVaryingName; 1156 const char* fFSVaryingName;
1157 1157
1158 bool fIsFlipped; 1158 bool fIsFlipped;
1159 1159
1160 // @{ 1160 // @{
1161 /// Values last uploaded as uniforms 1161 /// Values last uploaded as uniforms
1162 1162
1163 SkScalar fCachedCenterX; 1163 SkScalar fCachedCenterX;
1164 SkScalar fCachedCenterY; 1164 SkScalar fCachedCenterY;
1165 SkScalar fCachedA; 1165 SkScalar fCachedA;
1166 SkScalar fCachedB; 1166 SkScalar fCachedB;
1167 SkScalar fCachedC; 1167 SkScalar fCachedC;
1168 SkScalar fCachedTLimit; 1168 SkScalar fCachedTLimit;
1169 1169
1170 // @} 1170 // @}
1171 1171
1172 private: 1172 private:
1173 typedef GrGLGradientEffect INHERITED; 1173 typedef GrGLGradientEffect INHERITED;
1174 1174
1175 }; 1175 };
1176 1176
1177 void CircleOutside2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, 1177 void CircleOutside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps,
1178 GrProcessorKeyBuilder* b) const { 1178 GrProcessorKeyBuilder* b) const {
1179 GLCircleOutside2PtConicalEffect::GenKey(*this, caps, b); 1179 GLCircleOutside2PtConicalEffect::GenKey(*this, caps, b);
1180 } 1180 }
1181 1181
1182 GrGLFragmentProcessor* CircleOutside2PtConicalEffect::createGLInstance() const { 1182 GrGLFragmentProcessor* CircleOutside2PtConicalEffect::createGLInstance() const {
1183 return SkNEW_ARGS(GLCircleOutside2PtConicalEffect, (*this)); 1183 return SkNEW_ARGS(GLCircleOutside2PtConicalEffect, (*this));
1184 } 1184 }
1185 1185
1186 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleOutside2PtConicalEffect); 1186 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleOutside2PtConicalEffect);
1187 1187
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1321 fCachedCenterX = centerX; 1321 fCachedCenterX = centerX;
1322 fCachedCenterY = centerY; 1322 fCachedCenterY = centerY;
1323 fCachedA = A; 1323 fCachedA = A;
1324 fCachedB = B; 1324 fCachedB = B;
1325 fCachedC = C; 1325 fCachedC = C;
1326 fCachedTLimit = tLimit; 1326 fCachedTLimit = tLimit;
1327 } 1327 }
1328 } 1328 }
1329 1329
1330 void GLCircleOutside2PtConicalEffect::GenKey(const GrProcessor& processor, 1330 void GLCircleOutside2PtConicalEffect::GenKey(const GrProcessor& processor,
1331 const GrGLCaps&, GrProcessorKeyBuil der* b) { 1331 const GrGLSLCaps&, GrProcessorKeyBu ilder* b) {
1332 uint32_t* key = b->add32n(2); 1332 uint32_t* key = b->add32n(2);
1333 key[0] = GenBaseGradientKey(processor); 1333 key[0] = GenBaseGradientKey(processor);
1334 key[1] = processor.cast<CircleOutside2PtConicalEffect>().isFlipped(); 1334 key[1] = processor.cast<CircleOutside2PtConicalEffect>().isFlipped();
1335 } 1335 }
1336 1336
1337 ////////////////////////////////////////////////////////////////////////////// 1337 //////////////////////////////////////////////////////////////////////////////
1338 1338
1339 GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx, 1339 GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx,
1340 const SkTwoPointConicalG radient& shader, 1340 const SkTwoPointConicalG radient& shader,
1341 SkShader::TileMode tm, 1341 SkShader::TileMode tm,
(...skipping 30 matching lines...) Expand all
1372 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf o); 1372 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf o);
1373 } else if (type == kEdge_ConicalType) { 1373 } else if (type == kEdge_ConicalType) {
1374 set_matrix_edge_conical(shader, &matrix); 1374 set_matrix_edge_conical(shader, &matrix);
1375 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); 1375 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm);
1376 } else { 1376 } else {
1377 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in fo); 1377 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in fo);
1378 } 1378 }
1379 } 1379 }
1380 1380
1381 #endif 1381 #endif
OLDNEW
« no previous file with comments | « src/effects/gradients/SkSweepGradient.cpp ('k') | src/effects/gradients/SkTwoPointRadialGradient.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698