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

Side by Side Diff: src/gpu/effects/GrDashingEffect.cpp

Issue 822423004: Move most of the transform logic into the primitive processors (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: cleanup 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/effects/GrBitmapTextGeoProc.cpp ('k') | src/gpu/effects/GrDistanceFieldTextureEffect.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 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 "GrDashingEffect.h" 8 #include "GrDashingEffect.h"
9 9
10 #include "../GrAARectRenderer.h" 10 #include "../GrAARectRenderer.h"
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 SkScalar getRadius() const { return fRadius; } 489 SkScalar getRadius() const { return fRadius; }
490 490
491 SkScalar getCenterX() const { return fCenterX; } 491 SkScalar getCenterX() const { return fCenterX; }
492 492
493 SkScalar getIntervalLength() const { return fIntervalLength; } 493 SkScalar getIntervalLength() const { return fIntervalLength; }
494 494
495 virtual void getGLProcessorKey(const GrBatchTracker&, 495 virtual void getGLProcessorKey(const GrBatchTracker&,
496 const GrGLCaps&, 496 const GrGLCaps&,
497 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 497 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
498 498
499 GrGLGeometryProcessor* createGLInstance(const GrBatchTracker&) const SK_OVER RIDE; 499 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker&,
500 const GrGLCaps&) const SK_O VERRIDE;
500 501
501 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE; 502 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE;
502 503
503 bool onCanMakeEqual(const GrBatchTracker&, 504 bool onCanMakeEqual(const GrBatchTracker&,
504 const GrGeometryProcessor&, 505 const GrGeometryProcessor&,
505 const GrBatchTracker&) const SK_OVERRIDE; 506 const GrBatchTracker&) const SK_OVERRIDE;
506 507
507 private: 508 private:
508 DashingCircleEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& i nfo, 509 DashingCircleEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& i nfo,
509 SkScalar radius, const SkMatrix& localMatrix); 510 SkScalar radius, const SkMatrix& localMatrix);
(...skipping 13 matching lines...) Expand all
523 524
524 typedef GrGeometryProcessor INHERITED; 525 typedef GrGeometryProcessor INHERITED;
525 }; 526 };
526 527
527 ////////////////////////////////////////////////////////////////////////////// 528 //////////////////////////////////////////////////////////////////////////////
528 529
529 class GLDashingCircleEffect : public GrGLGeometryProcessor { 530 class GLDashingCircleEffect : public GrGLGeometryProcessor {
530 public: 531 public:
531 GLDashingCircleEffect(const GrGeometryProcessor&, const GrBatchTracker&); 532 GLDashingCircleEffect(const GrGeometryProcessor&, const GrBatchTracker&);
532 533
533 void emitCode(const EmitArgs&) SK_OVERRIDE; 534 void onEmitCode(EmitArgs&) SK_OVERRIDE;
534 535
535 static inline void GenKey(const GrGeometryProcessor&, 536 static inline void GenKey(const GrGeometryProcessor&,
536 const GrBatchTracker&, 537 const GrBatchTracker&,
537 const GrGLCaps&, 538 const GrGLCaps&,
538 GrProcessorKeyBuilder*); 539 GrProcessorKeyBuilder*);
539 540
540 virtual void setData(const GrGLProgramDataManager&, 541 virtual void setData(const GrGLProgramDataManager&,
541 const GrPrimitiveProcessor&, 542 const GrPrimitiveProcessor&,
542 const GrBatchTracker&) SK_OVERRIDE; 543 const GrBatchTracker&) SK_OVERRIDE;
543 544
544 private: 545 private:
545 UniformHandle fParamUniform; 546 UniformHandle fParamUniform;
546 UniformHandle fColorUniform; 547 UniformHandle fColorUniform;
547 GrColor fColor; 548 GrColor fColor;
548 SkScalar fPrevRadius; 549 SkScalar fPrevRadius;
549 SkScalar fPrevCenterX; 550 SkScalar fPrevCenterX;
550 SkScalar fPrevIntervalLength; 551 SkScalar fPrevIntervalLength;
551 typedef GrGLGeometryProcessor INHERITED; 552 typedef GrGLGeometryProcessor INHERITED;
552 }; 553 };
553 554
554 GLDashingCircleEffect::GLDashingCircleEffect(const GrGeometryProcessor&, 555 GLDashingCircleEffect::GLDashingCircleEffect(const GrGeometryProcessor&,
555 const GrBatchTracker&) { 556 const GrBatchTracker&) {
556 fColor = GrColor_ILLEGAL; 557 fColor = GrColor_ILLEGAL;
557 fPrevRadius = SK_ScalarMin; 558 fPrevRadius = SK_ScalarMin;
558 fPrevCenterX = SK_ScalarMin; 559 fPrevCenterX = SK_ScalarMin;
559 fPrevIntervalLength = SK_ScalarMax; 560 fPrevIntervalLength = SK_ScalarMax;
560 } 561 }
561 562
562 void GLDashingCircleEffect::emitCode(const EmitArgs& args) { 563 void GLDashingCircleEffect::onEmitCode(EmitArgs& args) {
563 const DashingCircleEffect& dce = args.fGP.cast<DashingCircleEffect>(); 564 const DashingCircleEffect& dce = args.fGP.cast<DashingCircleEffect>();
564 const DashingCircleBatchTracker local = args.fBT.cast<DashingCircleBatchTrac ker>(); 565 const DashingCircleBatchTracker local = args.fBT.cast<DashingCircleBatchTrac ker>();
565 GrGLGPBuilder* pb = args.fPB; 566 GrGLGPBuilder* pb = args.fPB;
566 const char *paramName; 567 const char *paramName;
567 // The param uniforms, xyz, refer to circle radius - 0.5, cicles center x co ord, and 568 // The param uniforms, xyz, refer to circle radius - 0.5, cicles center x co ord, and
568 // the total interval length of the dash. 569 // the total interval length of the dash.
569 fParamUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibilit y, 570 fParamUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibilit y,
570 kVec3f_GrSLType, kDefault_GrSLPrecision , 571 kVec3f_GrSLType, kDefault_GrSLPrecision ,
571 "params", &paramName); 572 "params", &paramName);
572 573
573 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 574 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
574 575
576 // emit attributes
577 vsBuilder->emitAttributes(dce);
578
575 GrGLVertToFrag v(kVec2f_GrSLType); 579 GrGLVertToFrag v(kVec2f_GrSLType);
576 args.fPB->addVarying("Coord", &v); 580 args.fPB->addVarying("Coord", &v);
577 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), dce.inCoord()->fName); 581 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), dce.inCoord()->fName);
578 582
579 // Setup pass through color 583 // Setup pass through color
580 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU LL, &fColorUniform); 584 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU LL, &fColorUniform);
581 585
582 // setup coord outputs
583 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), dce.inPositi on()->fName);
584 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), dce.inPosition( )->fName);
585
586 // setup uniform viewMatrix 586 // setup uniform viewMatrix
587 this->addUniformViewMatrix(pb); 587 this->addUniformViewMatrix(pb);
588 588
589 // setup position varying 589 // Setup position
590 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), th is->uViewM(), 590 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this->uV iewM(),
591 dce.inPosition()->fName); 591 dce.inPosition()->fName);
592 592
593 // emit transforms
594 this->emitTransforms(args.fPB, this->position(), dce.inPosition()->fName, d ce.localMatrix(),
595 args.fTransformsIn, args.fTransformsOut);
596
593 // transforms all points so that we can compare them to our test circle 597 // transforms all points so that we can compare them to our test circle
594 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 598 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
595 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s.z) * %s. z;\n", 599 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s.z) * %s. z;\n",
596 v.fsIn(), v.fsIn(), paramName, paramName); 600 v.fsIn(), v.fsIn(), paramName, paramName);
597 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n", v.fsIn()); 601 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n", v.fsIn());
598 fsBuilder->codeAppendf("\t\tvec2 center = vec2(%s.y, 0.0);\n", paramName); 602 fsBuilder->codeAppendf("\t\tvec2 center = vec2(%s.y, 0.0);\n", paramName);
599 fsBuilder->codeAppend("\t\tfloat dist = length(center - fragPosShifted);\n") ; 603 fsBuilder->codeAppend("\t\tfloat dist = length(center - fragPosShifted);\n") ;
600 if (GrProcessorEdgeTypeIsAA(dce.getEdgeType())) { 604 if (GrProcessorEdgeTypeIsAA(dce.getEdgeType())) {
601 fsBuilder->codeAppendf("\t\tfloat diff = dist - %s.x;\n", paramName); 605 fsBuilder->codeAppendf("\t\tfloat diff = dist - %s.x;\n", paramName);
602 fsBuilder->codeAppend("\t\tdiff = 1.0 - diff;\n"); 606 fsBuilder->codeAppend("\t\tdiff = 1.0 - diff;\n");
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 void DashingCircleEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* ou t) const { 666 void DashingCircleEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* ou t) const {
663 out->setUnknownSingleComponent(); 667 out->setUnknownSingleComponent();
664 } 668 }
665 669
666 void DashingCircleEffect::getGLProcessorKey(const GrBatchTracker& bt, 670 void DashingCircleEffect::getGLProcessorKey(const GrBatchTracker& bt,
667 const GrGLCaps& caps, 671 const GrGLCaps& caps,
668 GrProcessorKeyBuilder* b) const { 672 GrProcessorKeyBuilder* b) const {
669 GLDashingCircleEffect::GenKey(*this, bt, caps, b); 673 GLDashingCircleEffect::GenKey(*this, bt, caps, b);
670 } 674 }
671 675
672 GrGLGeometryProcessor* DashingCircleEffect::createGLInstance(const GrBatchTracke r& bt) const { 676 GrGLPrimitiveProcessor* DashingCircleEffect::createGLInstance(const GrBatchTrack er& bt,
677 const GrGLCaps&) c onst {
673 return SkNEW_ARGS(GLDashingCircleEffect, (*this, bt)); 678 return SkNEW_ARGS(GLDashingCircleEffect, (*this, bt));
674 } 679 }
675 680
676 DashingCircleEffect::DashingCircleEffect(GrColor color, 681 DashingCircleEffect::DashingCircleEffect(GrColor color,
677 GrPrimitiveEdgeType edgeType, 682 GrPrimitiveEdgeType edgeType,
678 const DashInfo& info, 683 const DashInfo& info,
679 SkScalar radius, 684 SkScalar radius,
680 const SkMatrix& localMatrix) 685 const SkMatrix& localMatrix)
681 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) { 686 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) {
682 this->initClassID<DashingCircleEffect>(); 687 this->initClassID<DashingCircleEffect>();
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } 781 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
777 782
778 const SkRect& getRect() const { return fRect; } 783 const SkRect& getRect() const { return fRect; }
779 784
780 SkScalar getIntervalLength() const { return fIntervalLength; } 785 SkScalar getIntervalLength() const { return fIntervalLength; }
781 786
782 virtual void getGLProcessorKey(const GrBatchTracker& bt, 787 virtual void getGLProcessorKey(const GrBatchTracker& bt,
783 const GrGLCaps& caps, 788 const GrGLCaps& caps,
784 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 789 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
785 790
786 GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) const SK_O VERRIDE; 791 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt,
792 const GrGLCaps&) const SK_O VERRIDE;
787 793
788 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE; 794 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE;
789 795
790 bool onCanMakeEqual(const GrBatchTracker&, 796 bool onCanMakeEqual(const GrBatchTracker&,
791 const GrGeometryProcessor&, 797 const GrGeometryProcessor&,
792 const GrBatchTracker&) const SK_OVERRIDE; 798 const GrBatchTracker&) const SK_OVERRIDE;
793 799
794 private: 800 private:
795 DashingLineEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& inf o, 801 DashingLineEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& inf o,
796 SkScalar strokeWidth, const SkMatrix& localMatrix); 802 SkScalar strokeWidth, const SkMatrix& localMatrix);
(...skipping 12 matching lines...) Expand all
809 815
810 typedef GrGeometryProcessor INHERITED; 816 typedef GrGeometryProcessor INHERITED;
811 }; 817 };
812 818
813 ////////////////////////////////////////////////////////////////////////////// 819 //////////////////////////////////////////////////////////////////////////////
814 820
815 class GLDashingLineEffect : public GrGLGeometryProcessor { 821 class GLDashingLineEffect : public GrGLGeometryProcessor {
816 public: 822 public:
817 GLDashingLineEffect(const GrGeometryProcessor&, const GrBatchTracker&); 823 GLDashingLineEffect(const GrGeometryProcessor&, const GrBatchTracker&);
818 824
819 void emitCode(const EmitArgs&) SK_OVERRIDE; 825 void onEmitCode(EmitArgs&) SK_OVERRIDE;
820 826
821 static inline void GenKey(const GrGeometryProcessor&, 827 static inline void GenKey(const GrGeometryProcessor&,
822 const GrBatchTracker&, 828 const GrBatchTracker&,
823 const GrGLCaps&, 829 const GrGLCaps&,
824 GrProcessorKeyBuilder*); 830 GrProcessorKeyBuilder*);
825 831
826 virtual void setData(const GrGLProgramDataManager&, 832 virtual void setData(const GrGLProgramDataManager&,
827 const GrPrimitiveProcessor&, 833 const GrPrimitiveProcessor&,
828 const GrBatchTracker&) SK_OVERRIDE; 834 const GrBatchTracker&) SK_OVERRIDE;
829 835
830 private: 836 private:
831 GrColor fColor; 837 GrColor fColor;
832 UniformHandle fRectUniform; 838 UniformHandle fRectUniform;
833 UniformHandle fIntervalUniform; 839 UniformHandle fIntervalUniform;
834 UniformHandle fColorUniform; 840 UniformHandle fColorUniform;
835 SkRect fPrevRect; 841 SkRect fPrevRect;
836 SkScalar fPrevIntervalLength; 842 SkScalar fPrevIntervalLength;
837 typedef GrGLGeometryProcessor INHERITED; 843 typedef GrGLGeometryProcessor INHERITED;
838 }; 844 };
839 845
840 GLDashingLineEffect::GLDashingLineEffect(const GrGeometryProcessor&, 846 GLDashingLineEffect::GLDashingLineEffect(const GrGeometryProcessor&,
841 const GrBatchTracker&) { 847 const GrBatchTracker&) {
842 fColor = GrColor_ILLEGAL; 848 fColor = GrColor_ILLEGAL;
843 fPrevRect.fLeft = SK_ScalarNaN; 849 fPrevRect.fLeft = SK_ScalarNaN;
844 fPrevIntervalLength = SK_ScalarMax; 850 fPrevIntervalLength = SK_ScalarMax;
845 } 851 }
846 852
847 void GLDashingLineEffect::emitCode(const EmitArgs& args) { 853 void GLDashingLineEffect::onEmitCode(EmitArgs& args) {
848 const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>(); 854 const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>();
849 const DashingLineBatchTracker& local = args.fBT.cast<DashingLineBatchTracker >(); 855 const DashingLineBatchTracker& local = args.fBT.cast<DashingLineBatchTracker >();
850 GrGLGPBuilder* pb = args.fPB; 856 GrGLGPBuilder* pb = args.fPB;
851 const char *rectName; 857 const char *rectName;
852 // The rect uniform's xyzw refer to (left + 0.5, top + 0.5, right - 0.5, bot tom - 0.5), 858 // The rect uniform's xyzw refer to (left + 0.5, top + 0.5, right - 0.5, bot tom - 0.5),
853 // respectively. 859 // respectively.
854 fRectUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility , 860 fRectUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility ,
855 kVec4f_GrSLType, kDefault_GrSLPrecision, 861 kVec4f_GrSLType, kDefault_GrSLPrecision,
856 "rect", 862 "rect",
857 &rectName); 863 &rectName);
858 const char *intervalName; 864 const char *intervalName;
859 // The interval uniform's refers to the total length of the interval (on + o ff) 865 // The interval uniform's refers to the total length of the interval (on + o ff)
860 fIntervalUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibi lity, 866 fIntervalUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibi lity,
861 kFloat_GrSLType, kDefault_GrSLPrecis ion, 867 kFloat_GrSLType, kDefault_GrSLPrecis ion,
862 "interval", 868 "interval",
863 &intervalName); 869 &intervalName);
864 870
865 871
866 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 872 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
867 873
874 // emit attributes
875 vsBuilder->emitAttributes(de);
876
868 GrGLVertToFrag v(kVec2f_GrSLType); 877 GrGLVertToFrag v(kVec2f_GrSLType);
869 args.fPB->addVarying("Coord", &v); 878 args.fPB->addVarying("Coord", &v);
870 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), de.inCoord()->fName); 879 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), de.inCoord()->fName);
871 880
872 // Setup pass through color 881 // Setup pass through color
873 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU LL, &fColorUniform); 882 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU LL, &fColorUniform);
874 883
875 // setup coord outputs
876 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), de.inPositio n()->fName);
877 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), de.inPosition() ->fName);
878
879 // setup uniform viewMatrix 884 // setup uniform viewMatrix
880 this->addUniformViewMatrix(pb); 885 this->addUniformViewMatrix(pb);
881 886
882 // setup position varying 887 // Setup position
883 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), th is->uViewM(), 888 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this->uV iewM(),
884 de.inPosition()->fName); 889 de.inPosition()->fName);
885 890
891 // emit transforms
892 this->emitTransforms(args.fPB, this->position(), de.inPosition()->fName, de .localMatrix(),
893 args.fTransformsIn, args.fTransformsOut);
894
886 // transforms all points so that we can compare them to our test rect 895 // transforms all points so that we can compare them to our test rect
887 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 896 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
888 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s) * %s;\n ", 897 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s) * %s;\n ",
889 v.fsIn(), v.fsIn(), intervalName, intervalName); 898 v.fsIn(), v.fsIn(), intervalName, intervalName);
890 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n", v.fsIn()); 899 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n", v.fsIn());
891 if (GrProcessorEdgeTypeIsAA(de.getEdgeType())) { 900 if (GrProcessorEdgeTypeIsAA(de.getEdgeType())) {
892 // The amount of coverage removed in x and y by the edges is computed as a pair of negative 901 // The amount of coverage removed in x and y by the edges is computed as a pair of negative
893 // numbers, xSub and ySub. 902 // numbers, xSub and ySub.
894 fsBuilder->codeAppend("\t\tfloat xSub, ySub;\n"); 903 fsBuilder->codeAppend("\t\tfloat xSub, ySub;\n");
895 fsBuilder->codeAppendf("\t\txSub = min(fragPosShifted.x - %s.x, 0.0);\n" , rectName); 904 fsBuilder->codeAppendf("\t\txSub = min(fragPosShifted.x - %s.x, 0.0);\n" , rectName);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 void DashingLineEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const { 971 void DashingLineEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const {
963 out->setUnknownSingleComponent(); 972 out->setUnknownSingleComponent();
964 } 973 }
965 974
966 void DashingLineEffect::getGLProcessorKey(const GrBatchTracker& bt, 975 void DashingLineEffect::getGLProcessorKey(const GrBatchTracker& bt,
967 const GrGLCaps& caps, 976 const GrGLCaps& caps,
968 GrProcessorKeyBuilder* b) const { 977 GrProcessorKeyBuilder* b) const {
969 GLDashingLineEffect::GenKey(*this, bt, caps, b); 978 GLDashingLineEffect::GenKey(*this, bt, caps, b);
970 } 979 }
971 980
972 GrGLGeometryProcessor* DashingLineEffect::createGLInstance(const GrBatchTracker& bt) const { 981 GrGLPrimitiveProcessor* DashingLineEffect::createGLInstance(const GrBatchTracker & bt,
982 const GrGLCaps&) con st {
973 return SkNEW_ARGS(GLDashingLineEffect, (*this, bt)); 983 return SkNEW_ARGS(GLDashingLineEffect, (*this, bt));
974 } 984 }
975 985
976 DashingLineEffect::DashingLineEffect(GrColor color, 986 DashingLineEffect::DashingLineEffect(GrColor color,
977 GrPrimitiveEdgeType edgeType, 987 GrPrimitiveEdgeType edgeType,
978 const DashInfo& info, 988 const DashInfo& info,
979 SkScalar strokeWidth, 989 SkScalar strokeWidth,
980 const SkMatrix& localMatrix) 990 const SkMatrix& localMatrix)
981 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) { 991 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) {
982 this->initClassID<DashingLineEffect>(); 992 this->initClassID<DashingLineEffect>();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1049 return DashingCircleEffect::Create(color, edgeType, info, 1059 return DashingCircleEffect::Create(color, edgeType, info,
1050 SkScalarHalf(strokeWidth), 1060 SkScalarHalf(strokeWidth),
1051 localMatrix); 1061 localMatrix);
1052 case GrDashingEffect::kNonRound_DashCap: 1062 case GrDashingEffect::kNonRound_DashCap:
1053 return DashingLineEffect::Create(color, edgeType, info, strokeWidth, localMatrix); 1063 return DashingLineEffect::Create(color, edgeType, info, strokeWidth, localMatrix);
1054 default: 1064 default:
1055 SkFAIL("Unexpected dashed cap."); 1065 SkFAIL("Unexpected dashed cap.");
1056 } 1066 }
1057 return NULL; 1067 return NULL;
1058 } 1068 }
OLDNEW
« no previous file with comments | « src/gpu/effects/GrBitmapTextGeoProc.cpp ('k') | src/gpu/effects/GrDistanceFieldTextureEffect.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698