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

Side by Side Diff: src/gpu/GrAAConvexPathRenderer.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 | « include/gpu/GrFragmentProcessor.h ('k') | src/gpu/GrDefaultGeoProcFactory.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 2012 Google Inc. 3 * Copyright 2012 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 "GrAAConvexPathRenderer.h" 9 #include "GrAAConvexPathRenderer.h"
10 10
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 528
529 const GrAttribute* inPosition() const { return fInPosition; } 529 const GrAttribute* inPosition() const { return fInPosition; }
530 const GrAttribute* inQuadEdge() const { return fInQuadEdge; } 530 const GrAttribute* inQuadEdge() const { return fInQuadEdge; }
531 531
532 class GLProcessor : public GrGLGeometryProcessor { 532 class GLProcessor : public GrGLGeometryProcessor {
533 public: 533 public:
534 GLProcessor(const GrGeometryProcessor&, 534 GLProcessor(const GrGeometryProcessor&,
535 const GrBatchTracker&) 535 const GrBatchTracker&)
536 : fColor(GrColor_ILLEGAL) {} 536 : fColor(GrColor_ILLEGAL) {}
537 537
538 void emitCode(const EmitArgs& args) SK_OVERRIDE { 538 void onEmitCode(EmitArgs& args) SK_OVERRIDE {
539 const QuadEdgeEffect& qe = args.fGP.cast<QuadEdgeEffect>(); 539 const QuadEdgeEffect& qe = args.fGP.cast<QuadEdgeEffect>();
540 GrGLGPBuilder* pb = args.fPB; 540 GrGLGPBuilder* pb = args.fPB;
541 GrGLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder(); 541 GrGLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder();
542 542
543 // emit attributes
544 vsBuilder->emitAttributes(qe);
545
543 GrGLVertToFrag v(kVec4f_GrSLType); 546 GrGLVertToFrag v(kVec4f_GrSLType);
544 args.fPB->addVarying("QuadEdge", &v); 547 args.fPB->addVarying("QuadEdge", &v);
545 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), qe.inQuadEdge()->fName ); 548 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), qe.inQuadEdge()->fName );
546 549
547 const BatchTracker& local = args.fBT.cast<BatchTracker>(); 550 const BatchTracker& local = args.fBT.cast<BatchTracker>();
548 551
549 // Setup pass through color 552 // Setup pass through color
550 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputC olor, NULL, 553 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputC olor, NULL,
551 &fColorUniform); 554 &fColorUniform);
552 555
553 // setup coord outputs
554 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), qe.i nPosition()->fName);
555 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), qe.inPo sition()->fName);
556
557 // setup uniform viewMatrix 556 // setup uniform viewMatrix
558 this->addUniformViewMatrix(pb); 557 this->addUniformViewMatrix(pb);
559 558
560 // setup position varying 559 // Setup position
561 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPositi on(), 560 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this->uViewM(),
562 this->uViewM(), qe.inPosition()->fName); 561 qe.inPosition()->fName);
562
563 // emit transforms
564 this->emitTransforms(args.fPB, this->position(), qe.inPosition()->f Name,
565 qe.localMatrix(), args.fTransformsIn, args.fTra nsformsOut);
563 566
564 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilde r(); 567 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilde r();
565 568
566 SkAssertResult(fsBuilder->enableFeature( 569 SkAssertResult(fsBuilder->enableFeature(
567 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature) ); 570 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature) );
568 fsBuilder->codeAppendf("float edgeAlpha;"); 571 fsBuilder->codeAppendf("float edgeAlpha;");
569 572
570 // keep the derivative instructions outside the conditional 573 // keep the derivative instructions outside the conditional
571 fsBuilder->codeAppendf("vec2 duvdx = dFdx(%s.xy);", v.fsIn()); 574 fsBuilder->codeAppendf("vec2 duvdx = dFdx(%s.xy);", v.fsIn());
572 fsBuilder->codeAppendf("vec2 duvdy = dFdy(%s.xy);", v.fsIn()); 575 fsBuilder->codeAppendf("vec2 duvdy = dFdy(%s.xy);", v.fsIn());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 618
616 typedef GrGLGeometryProcessor INHERITED; 619 typedef GrGLGeometryProcessor INHERITED;
617 }; 620 };
618 621
619 virtual void getGLProcessorKey(const GrBatchTracker& bt, 622 virtual void getGLProcessorKey(const GrBatchTracker& bt,
620 const GrGLCaps& caps, 623 const GrGLCaps& caps,
621 GrProcessorKeyBuilder* b) const SK_OVERRIDE { 624 GrProcessorKeyBuilder* b) const SK_OVERRIDE {
622 GLProcessor::GenKey(*this, bt, caps, b); 625 GLProcessor::GenKey(*this, bt, caps, b);
623 } 626 }
624 627
625 GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) const SK_O VERRIDE { 628 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt,
629 const GrGLCaps&) const SK_O VERRIDE {
626 return SkNEW_ARGS(GLProcessor, (*this, bt)); 630 return SkNEW_ARGS(GLProcessor, (*this, bt));
627 } 631 }
628 632
629 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE { 633 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE {
630 BatchTracker* local = bt->cast<BatchTracker>(); 634 BatchTracker* local = bt->cast<BatchTracker>();
631 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 635 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
632 local->fUsesLocalCoords = init.fUsesLocalCoords; 636 local->fUsesLocalCoords = init.fUsesLocalCoords;
633 } 637 }
634 638
635 bool onCanMakeEqual(const GrBatchTracker& m, 639 bool onCanMakeEqual(const GrBatchTracker& m,
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 vOffset, // start vertex 786 vOffset, // start vertex
783 0, // start index 787 0, // start index
784 draw.fVertexCnt, 788 draw.fVertexCnt,
785 draw.fIndexCnt, 789 draw.fIndexCnt,
786 &devBounds); 790 &devBounds);
787 vOffset += draw.fVertexCnt; 791 vOffset += draw.fVertexCnt;
788 } 792 }
789 793
790 return true; 794 return true;
791 } 795 }
OLDNEW
« no previous file with comments | « include/gpu/GrFragmentProcessor.h ('k') | src/gpu/GrDefaultGeoProcFactory.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698