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

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: tiny update 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 "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 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker&) const SK_OVERRIDE; 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 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; 534 virtual void emitCode(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::emitCode(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 const char* pos3 = "pos3";
591 dce.inPosition()->fName); 591 vsBuilder->codeAppendf("vec3 %s;", pos3);
592 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", pos3, this->uViewM(), dce.i nPosition()->fName);
593
594 // emit transforms
595 this->emitTransforms(args.fPB, pos3, dce.inPosition()->fName, dce.localMatri x(),
596 args.fTransformsIn, args.fTransformsOut);
597
598 vsBuilder->transformToNormalizedDeviceSpace(pos3);
592 599
593 // transforms all points so that we can compare them to our test circle 600 // transforms all points so that we can compare them to our test circle
594 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 601 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
595 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s.z) * %s. z;\n", 602 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s.z) * %s. z;\n",
596 v.fsIn(), v.fsIn(), paramName, paramName); 603 v.fsIn(), v.fsIn(), paramName, paramName);
597 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n", v.fsIn()); 604 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); 605 fsBuilder->codeAppendf("\t\tvec2 center = vec2(%s.y, 0.0);\n", paramName);
599 fsBuilder->codeAppend("\t\tfloat dist = length(center - fragPosShifted);\n") ; 606 fsBuilder->codeAppend("\t\tfloat dist = length(center - fragPosShifted);\n") ;
600 if (GrProcessorEdgeTypeIsAA(dce.getEdgeType())) { 607 if (GrProcessorEdgeTypeIsAA(dce.getEdgeType())) {
601 fsBuilder->codeAppendf("\t\tfloat diff = dist - %s.x;\n", paramName); 608 fsBuilder->codeAppendf("\t\tfloat diff = dist - %s.x;\n", paramName);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 void DashingCircleEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* ou t) const { 669 void DashingCircleEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* ou t) const {
663 out->setUnknownSingleComponent(); 670 out->setUnknownSingleComponent();
664 } 671 }
665 672
666 void DashingCircleEffect::getGLProcessorKey(const GrBatchTracker& bt, 673 void DashingCircleEffect::getGLProcessorKey(const GrBatchTracker& bt,
667 const GrGLCaps& caps, 674 const GrGLCaps& caps,
668 GrProcessorKeyBuilder* b) const { 675 GrProcessorKeyBuilder* b) const {
669 GLDashingCircleEffect::GenKey(*this, bt, caps, b); 676 GLDashingCircleEffect::GenKey(*this, bt, caps, b);
670 } 677 }
671 678
672 GrGLGeometryProcessor* DashingCircleEffect::createGLInstance(const GrBatchTracke r& bt) const { 679 GrGLPrimitiveProcessor* DashingCircleEffect::createGLInstance(const GrBatchTrack er& bt,
680 const GrGLCaps&) c onst {
673 return SkNEW_ARGS(GLDashingCircleEffect, (*this, bt)); 681 return SkNEW_ARGS(GLDashingCircleEffect, (*this, bt));
674 } 682 }
675 683
676 DashingCircleEffect::DashingCircleEffect(GrColor color, 684 DashingCircleEffect::DashingCircleEffect(GrColor color,
677 GrPrimitiveEdgeType edgeType, 685 GrPrimitiveEdgeType edgeType,
678 const DashInfo& info, 686 const DashInfo& info,
679 SkScalar radius, 687 SkScalar radius,
680 const SkMatrix& localMatrix) 688 const SkMatrix& localMatrix)
681 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) { 689 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) {
682 this->initClassID<DashingCircleEffect>(); 690 this->initClassID<DashingCircleEffect>();
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } 784 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
777 785
778 const SkRect& getRect() const { return fRect; } 786 const SkRect& getRect() const { return fRect; }
779 787
780 SkScalar getIntervalLength() const { return fIntervalLength; } 788 SkScalar getIntervalLength() const { return fIntervalLength; }
781 789
782 virtual void getGLProcessorKey(const GrBatchTracker& bt, 790 virtual void getGLProcessorKey(const GrBatchTracker& bt,
783 const GrGLCaps& caps, 791 const GrGLCaps& caps,
784 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 792 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
785 793
786 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 794 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt,
795 const GrGLCaps&) const SK_O VERRIDE;
787 796
788 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE; 797 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE;
789 798
790 bool onCanMakeEqual(const GrBatchTracker&, 799 bool onCanMakeEqual(const GrBatchTracker&,
791 const GrGeometryProcessor&, 800 const GrGeometryProcessor&,
792 const GrBatchTracker&) const SK_OVERRIDE; 801 const GrBatchTracker&) const SK_OVERRIDE;
793 802
794 private: 803 private:
795 DashingLineEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& inf o, 804 DashingLineEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& inf o,
796 SkScalar strokeWidth, const SkMatrix& localMatrix); 805 SkScalar strokeWidth, const SkMatrix& localMatrix);
(...skipping 12 matching lines...) Expand all
809 818
810 typedef GrGeometryProcessor INHERITED; 819 typedef GrGeometryProcessor INHERITED;
811 }; 820 };
812 821
813 ////////////////////////////////////////////////////////////////////////////// 822 //////////////////////////////////////////////////////////////////////////////
814 823
815 class GLDashingLineEffect : public GrGLGeometryProcessor { 824 class GLDashingLineEffect : public GrGLGeometryProcessor {
816 public: 825 public:
817 GLDashingLineEffect(const GrGeometryProcessor&, const GrBatchTracker&); 826 GLDashingLineEffect(const GrGeometryProcessor&, const GrBatchTracker&);
818 827
819 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; 828 virtual void emitCode(EmitArgs&) SK_OVERRIDE;
820 829
821 static inline void GenKey(const GrGeometryProcessor&, 830 static inline void GenKey(const GrGeometryProcessor&,
822 const GrBatchTracker&, 831 const GrBatchTracker&,
823 const GrGLCaps&, 832 const GrGLCaps&,
824 GrProcessorKeyBuilder*); 833 GrProcessorKeyBuilder*);
825 834
826 virtual void setData(const GrGLProgramDataManager&, 835 virtual void setData(const GrGLProgramDataManager&,
827 const GrPrimitiveProcessor&, 836 const GrPrimitiveProcessor&,
828 const GrBatchTracker&) SK_OVERRIDE; 837 const GrBatchTracker&) SK_OVERRIDE;
829 838
830 private: 839 private:
831 GrColor fColor; 840 GrColor fColor;
832 UniformHandle fRectUniform; 841 UniformHandle fRectUniform;
833 UniformHandle fIntervalUniform; 842 UniformHandle fIntervalUniform;
834 UniformHandle fColorUniform; 843 UniformHandle fColorUniform;
835 SkRect fPrevRect; 844 SkRect fPrevRect;
836 SkScalar fPrevIntervalLength; 845 SkScalar fPrevIntervalLength;
837 typedef GrGLGeometryProcessor INHERITED; 846 typedef GrGLGeometryProcessor INHERITED;
838 }; 847 };
839 848
840 GLDashingLineEffect::GLDashingLineEffect(const GrGeometryProcessor&, 849 GLDashingLineEffect::GLDashingLineEffect(const GrGeometryProcessor&,
841 const GrBatchTracker&) { 850 const GrBatchTracker&) {
842 fColor = GrColor_ILLEGAL; 851 fColor = GrColor_ILLEGAL;
843 fPrevRect.fLeft = SK_ScalarNaN; 852 fPrevRect.fLeft = SK_ScalarNaN;
844 fPrevIntervalLength = SK_ScalarMax; 853 fPrevIntervalLength = SK_ScalarMax;
845 } 854 }
846 855
847 void GLDashingLineEffect::emitCode(const EmitArgs& args) { 856 void GLDashingLineEffect::emitCode(EmitArgs& args) {
848 const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>(); 857 const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>();
849 const DashingLineBatchTracker& local = args.fBT.cast<DashingLineBatchTracker >(); 858 const DashingLineBatchTracker& local = args.fBT.cast<DashingLineBatchTracker >();
850 GrGLGPBuilder* pb = args.fPB; 859 GrGLGPBuilder* pb = args.fPB;
851 const char *rectName; 860 const char *rectName;
852 // The rect uniform's xyzw refer to (left + 0.5, top + 0.5, right - 0.5, bot tom - 0.5), 861 // The rect uniform's xyzw refer to (left + 0.5, top + 0.5, right - 0.5, bot tom - 0.5),
853 // respectively. 862 // respectively.
854 fRectUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility , 863 fRectUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility ,
855 kVec4f_GrSLType, kDefault_GrSLPrecision, 864 kVec4f_GrSLType, kDefault_GrSLPrecision,
856 "rect", 865 "rect",
857 &rectName); 866 &rectName);
858 const char *intervalName; 867 const char *intervalName;
859 // The interval uniform's refers to the total length of the interval (on + o ff) 868 // The interval uniform's refers to the total length of the interval (on + o ff)
860 fIntervalUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibi lity, 869 fIntervalUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibi lity,
861 kFloat_GrSLType, kDefault_GrSLPrecis ion, 870 kFloat_GrSLType, kDefault_GrSLPrecis ion,
862 "interval", 871 "interval",
863 &intervalName); 872 &intervalName);
864 873
865 874
866 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 875 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
867 876
877 // emit attributes
878 vsBuilder->emitAttributes(de);
879
868 GrGLVertToFrag v(kVec2f_GrSLType); 880 GrGLVertToFrag v(kVec2f_GrSLType);
869 args.fPB->addVarying("Coord", &v); 881 args.fPB->addVarying("Coord", &v);
870 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), de.inCoord()->fName); 882 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), de.inCoord()->fName);
871 883
872 // Setup pass through color 884 // Setup pass through color
873 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU LL, &fColorUniform); 885 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU LL, &fColorUniform);
874 886
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 887 // setup uniform viewMatrix
880 this->addUniformViewMatrix(pb); 888 this->addUniformViewMatrix(pb);
881 889
882 // setup position varying 890 // Setup position
883 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), th is->uViewM(), 891 const char* pos3 = "pos3";
884 de.inPosition()->fName); 892 vsBuilder->codeAppendf("vec3 %s;", pos3);
893 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", pos3, this->uViewM(), de.in Position()->fName);
894
895 // emit transforms
896 this->emitTransforms(args.fPB, pos3, de.inPosition()->fName, de.localMatrix( ),
897 args.fTransformsIn, args.fTransformsOut);
898
899 vsBuilder->transformToNormalizedDeviceSpace(pos3);
885 900
886 // transforms all points so that we can compare them to our test rect 901 // transforms all points so that we can compare them to our test rect
887 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 902 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
888 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s) * %s;\n ", 903 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s) * %s;\n ",
889 v.fsIn(), v.fsIn(), intervalName, intervalName); 904 v.fsIn(), v.fsIn(), intervalName, intervalName);
890 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n", v.fsIn()); 905 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n", v.fsIn());
891 if (GrProcessorEdgeTypeIsAA(de.getEdgeType())) { 906 if (GrProcessorEdgeTypeIsAA(de.getEdgeType())) {
892 // The amount of coverage removed in x and y by the edges is computed as a pair of negative 907 // The amount of coverage removed in x and y by the edges is computed as a pair of negative
893 // numbers, xSub and ySub. 908 // numbers, xSub and ySub.
894 fsBuilder->codeAppend("\t\tfloat xSub, ySub;\n"); 909 fsBuilder->codeAppend("\t\tfloat xSub, ySub;\n");
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 void DashingLineEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const { 977 void DashingLineEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const {
963 out->setUnknownSingleComponent(); 978 out->setUnknownSingleComponent();
964 } 979 }
965 980
966 void DashingLineEffect::getGLProcessorKey(const GrBatchTracker& bt, 981 void DashingLineEffect::getGLProcessorKey(const GrBatchTracker& bt,
967 const GrGLCaps& caps, 982 const GrGLCaps& caps,
968 GrProcessorKeyBuilder* b) const { 983 GrProcessorKeyBuilder* b) const {
969 GLDashingLineEffect::GenKey(*this, bt, caps, b); 984 GLDashingLineEffect::GenKey(*this, bt, caps, b);
970 } 985 }
971 986
972 GrGLGeometryProcessor* DashingLineEffect::createGLInstance(const GrBatchTracker& bt) const { 987 GrGLPrimitiveProcessor* DashingLineEffect::createGLInstance(const GrBatchTracker & bt,
988 const GrGLCaps&) con st {
973 return SkNEW_ARGS(GLDashingLineEffect, (*this, bt)); 989 return SkNEW_ARGS(GLDashingLineEffect, (*this, bt));
974 } 990 }
975 991
976 DashingLineEffect::DashingLineEffect(GrColor color, 992 DashingLineEffect::DashingLineEffect(GrColor color,
977 GrPrimitiveEdgeType edgeType, 993 GrPrimitiveEdgeType edgeType,
978 const DashInfo& info, 994 const DashInfo& info,
979 SkScalar strokeWidth, 995 SkScalar strokeWidth,
980 const SkMatrix& localMatrix) 996 const SkMatrix& localMatrix)
981 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) { 997 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) {
982 this->initClassID<DashingLineEffect>(); 998 this->initClassID<DashingLineEffect>();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1049 return DashingCircleEffect::Create(color, edgeType, info, 1065 return DashingCircleEffect::Create(color, edgeType, info,
1050 SkScalarHalf(strokeWidth), 1066 SkScalarHalf(strokeWidth),
1051 localMatrix); 1067 localMatrix);
1052 case GrDashingEffect::kNonRound_DashCap: 1068 case GrDashingEffect::kNonRound_DashCap:
1053 return DashingLineEffect::Create(color, edgeType, info, strokeWidth, localMatrix); 1069 return DashingLineEffect::Create(color, edgeType, info, strokeWidth, localMatrix);
1054 default: 1070 default:
1055 SkFAIL("Unexpected dashed cap."); 1071 SkFAIL("Unexpected dashed cap.");
1056 } 1072 }
1057 return NULL; 1073 return NULL;
1058 } 1074 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698