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

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

Issue 827973002: ViewMatrix uniform upload moved to GeometryProcessor (Closed) Base URL: https://skia.googlesource.com/skia.git@vm-on-gp
Patch Set: feedback inc 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/GrOvalRenderer.cpp ('k') | src/gpu/effects/GrBitmapTextGeoProc.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 * Copyright 2013 Google Inc. 2 * Copyright 2013 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 "GrBezierEffect.h" 8 #include "GrBezierEffect.h"
9 9
10 #include "gl/GrGLProcessor.h" 10 #include "gl/GrGLProcessor.h"
(...skipping 14 matching lines...) Expand all
25 const GrBatchTracker&); 25 const GrBatchTracker&);
26 26
27 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; 27 virtual void emitCode(const EmitArgs&) SK_OVERRIDE;
28 28
29 static inline void GenKey(const GrGeometryProcessor&, 29 static inline void GenKey(const GrGeometryProcessor&,
30 const GrBatchTracker&, 30 const GrBatchTracker&,
31 const GrGLCaps&, 31 const GrGLCaps&,
32 GrProcessorKeyBuilder*); 32 GrProcessorKeyBuilder*);
33 33
34 virtual void setData(const GrGLProgramDataManager& pdman, 34 virtual void setData(const GrGLProgramDataManager& pdman,
35 const GrPrimitiveProcessor&, 35 const GrPrimitiveProcessor& primProc,
36 const GrBatchTracker& bt) SK_OVERRIDE { 36 const GrBatchTracker& bt) SK_OVERRIDE {
37 this->setUniformViewMatrix(pdman, primProc.viewMatrix());
38
37 const ConicBatchTracker& local = bt.cast<ConicBatchTracker>(); 39 const ConicBatchTracker& local = bt.cast<ConicBatchTracker>();
38 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColo r) { 40 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColo r) {
39 GrGLfloat c[4]; 41 GrGLfloat c[4];
40 GrColorToRGBAFloat(local.fColor, c); 42 GrColorToRGBAFloat(local.fColor, c);
41 pdman.set4fv(fColorUniform, 1, c); 43 pdman.set4fv(fColorUniform, 1, c);
42 fColor = local.fColor; 44 fColor = local.fColor;
43 } 45 }
44 if (0xff != local.fCoverageScale && fCoverageScale != local.fCoverageSca le) { 46 if (0xff != local.fCoverageScale && fCoverageScale != local.fCoverageSca le) {
45 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(local.fCov erageScale)); 47 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(local.fCov erageScale));
46 fCoverageScale = local.fCoverageScale; 48 fCoverageScale = local.fCoverageScale;
(...skipping 28 matching lines...) Expand all
75 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inConicCoeffs()->fName); 77 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inConicCoeffs()->fName);
76 78
77 // Setup pass through color 79 // Setup pass through color
78 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol or, NULL, 80 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol or, NULL,
79 &fColorUniform); 81 &fColorUniform);
80 82
81 // setup coord outputs 83 // setup coord outputs
82 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), gp.inPositio n()->fName); 84 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), gp.inPositio n()->fName);
83 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), gp.inPosition() ->fName); 85 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), gp.inPosition() ->fName);
84 86
87 // setup uniform viewMatrix
88 this->addUniformViewMatrix(pb);
89
85 // setup position varying 90 // setup position varying
86 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), vs Builder->uViewM(), 91 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), th is->uViewM(),
87 gp.inPosition()->fName); 92 gp.inPosition()->fName);
88 93
89 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 94 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
90 fsBuilder->codeAppend("float edgeAlpha;"); 95 fsBuilder->codeAppend("float edgeAlpha;");
91 96
92 switch (fEdgeType) { 97 switch (fEdgeType) {
93 case kHairlineAA_GrProcessorEdgeType: { 98 case kHairlineAA_GrProcessorEdgeType: {
94 SkAssertResult(fsBuilder->enableFeature( 99 SkAssertResult(fsBuilder->enableFeature(
95 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature) ); 100 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature) );
96 fsBuilder->codeAppendf("vec3 dklmdx = dFdx(%s.xyz);", v.fsIn()); 101 fsBuilder->codeAppendf("vec3 dklmdx = dFdx(%s.xyz);", v.fsIn());
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 const GrBatchTracker&); 259 const GrBatchTracker&);
255 260
256 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; 261 virtual void emitCode(const EmitArgs&) SK_OVERRIDE;
257 262
258 static inline void GenKey(const GrGeometryProcessor&, 263 static inline void GenKey(const GrGeometryProcessor&,
259 const GrBatchTracker&, 264 const GrBatchTracker&,
260 const GrGLCaps&, 265 const GrGLCaps&,
261 GrProcessorKeyBuilder*); 266 GrProcessorKeyBuilder*);
262 267
263 virtual void setData(const GrGLProgramDataManager& pdman, 268 virtual void setData(const GrGLProgramDataManager& pdman,
264 const GrPrimitiveProcessor&, 269 const GrPrimitiveProcessor& primProc,
265 const GrBatchTracker& bt) SK_OVERRIDE { 270 const GrBatchTracker& bt) SK_OVERRIDE {
271 this->setUniformViewMatrix(pdman, primProc.viewMatrix());
272
266 const QuadBatchTracker& local = bt.cast<QuadBatchTracker>(); 273 const QuadBatchTracker& local = bt.cast<QuadBatchTracker>();
267 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColo r) { 274 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColo r) {
268 GrGLfloat c[4]; 275 GrGLfloat c[4];
269 GrColorToRGBAFloat(local.fColor, c); 276 GrColorToRGBAFloat(local.fColor, c);
270 pdman.set4fv(fColorUniform, 1, c); 277 pdman.set4fv(fColorUniform, 1, c);
271 fColor = local.fColor; 278 fColor = local.fColor;
272 } 279 }
273 if (0xff != local.fCoverageScale && local.fCoverageScale != fCoverageSca le) { 280 if (0xff != local.fCoverageScale && local.fCoverageScale != fCoverageSca le) {
274 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(local.fCov erageScale)); 281 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(local.fCov erageScale));
275 fCoverageScale = local.fCoverageScale; 282 fCoverageScale = local.fCoverageScale;
(...skipping 28 matching lines...) Expand all
304 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inHairQuadEdge()->fName); 311 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inHairQuadEdge()->fName);
305 312
306 // Setup pass through color 313 // Setup pass through color
307 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol or, NULL, 314 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol or, NULL,
308 &fColorUniform); 315 &fColorUniform);
309 316
310 // setup coord outputs 317 // setup coord outputs
311 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), gp.inPositio n()->fName); 318 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), gp.inPositio n()->fName);
312 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), gp.inPosition() ->fName); 319 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), gp.inPosition() ->fName);
313 320
321 // setup uniform viewMatrix
322 this->addUniformViewMatrix(pb);
323
314 // setup position varying 324 // setup position varying
315 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), vs Builder->uViewM(), 325 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), th is->uViewM(),
316 gp.inPosition()->fName); 326 gp.inPosition()->fName);
317 327
318 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 328 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
319 fsBuilder->codeAppendf("float edgeAlpha;"); 329 fsBuilder->codeAppendf("float edgeAlpha;");
320 330
321 switch (fEdgeType) { 331 switch (fEdgeType) {
322 case kHairlineAA_GrProcessorEdgeType: { 332 case kHairlineAA_GrProcessorEdgeType: {
323 SkAssertResult(fsBuilder->enableFeature( 333 SkAssertResult(fsBuilder->enableFeature(
324 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature) ); 334 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature) );
325 fsBuilder->codeAppendf("vec2 duvdx = dFdx(%s.xy);", v.fsIn()); 335 fsBuilder->codeAppendf("vec2 duvdx = dFdx(%s.xy);", v.fsIn());
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 const GrBatchTracker&); 479 const GrBatchTracker&);
470 480
471 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; 481 virtual void emitCode(const EmitArgs&) SK_OVERRIDE;
472 482
473 static inline void GenKey(const GrGeometryProcessor&, 483 static inline void GenKey(const GrGeometryProcessor&,
474 const GrBatchTracker&, 484 const GrBatchTracker&,
475 const GrGLCaps&, 485 const GrGLCaps&,
476 GrProcessorKeyBuilder*); 486 GrProcessorKeyBuilder*);
477 487
478 virtual void setData(const GrGLProgramDataManager& pdman, 488 virtual void setData(const GrGLProgramDataManager& pdman,
479 const GrPrimitiveProcessor&, 489 const GrPrimitiveProcessor& primProc,
480 const GrBatchTracker& bt) SK_OVERRIDE { 490 const GrBatchTracker& bt) SK_OVERRIDE {
491 this->setUniformViewMatrix(pdman, primProc.viewMatrix());
492
481 const CubicBatchTracker& local = bt.cast<CubicBatchTracker>(); 493 const CubicBatchTracker& local = bt.cast<CubicBatchTracker>();
482 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColo r) { 494 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColo r) {
483 GrGLfloat c[4]; 495 GrGLfloat c[4];
484 GrColorToRGBAFloat(local.fColor, c); 496 GrColorToRGBAFloat(local.fColor, c);
485 pdman.set4fv(fColorUniform, 1, c); 497 pdman.set4fv(fColorUniform, 1, c);
486 fColor = local.fColor; 498 fColor = local.fColor;
487 } 499 }
488 } 500 }
489 501
490 private: 502 private:
(...skipping 21 matching lines...) Expand all
512 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inCubicCoeffs()->fName); 524 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inCubicCoeffs()->fName);
513 525
514 // Setup pass through color 526 // Setup pass through color
515 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol or, NULL, 527 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol or, NULL,
516 &fColorUniform); 528 &fColorUniform);
517 529
518 // setup coord outputs 530 // setup coord outputs
519 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), gp.inPositio n()->fName); 531 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), gp.inPositio n()->fName);
520 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), gp.inPosition() ->fName); 532 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), gp.inPosition() ->fName);
521 533
534 // setup uniform viewMatrix
535 this->addUniformViewMatrix(args.fPB);
536
522 // setup position varying 537 // setup position varying
523 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), vs Builder->uViewM(), 538 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), th is->uViewM(),
524 gp.inPosition()->fName); 539 gp.inPosition()->fName);
525 540
526 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 541 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
527 542
528 GrGLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, kHigh_GrSLPrecision ); 543 GrGLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, kHigh_GrSLPrecision );
529 GrGLShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, kHigh_GrSLPrecision); 544 GrGLShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, kHigh_GrSLPrecision);
530 GrGLShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, kHigh_GrSLPrecision); 545 GrGLShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, kHigh_GrSLPrecision);
531 GrGLShaderVar dfdx("dfdx", kFloat_GrSLType, 0, kHigh_GrSLPrecision); 546 GrGLShaderVar dfdx("dfdx", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
532 GrGLShaderVar dfdy("dfdy", kFloat_GrSLType, 0, kHigh_GrSLPrecision); 547 GrGLShaderVar dfdy("dfdy", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
533 GrGLShaderVar gF("gF", kVec2f_GrSLType, 0, kHigh_GrSLPrecision); 548 GrGLShaderVar gF("gF", kVec2f_GrSLType, 0, kHigh_GrSLPrecision);
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 GrGeometryProcessor* gp; 693 GrGeometryProcessor* gp;
679 do { 694 do {
680 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( 695 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>(
681 random->nextULessThan(kGrPro cessorEdgeTypeCnt)); 696 random->nextULessThan(kGrPro cessorEdgeTypeCnt));
682 gp = GrCubicEffect::Create(GrRandomColor(random), 697 gp = GrCubicEffect::Create(GrRandomColor(random),
683 GrProcessorUnitTest::TestMatrix(random), edge Type, caps); 698 GrProcessorUnitTest::TestMatrix(random), edge Type, caps);
684 } while (NULL == gp); 699 } while (NULL == gp);
685 return gp; 700 return gp;
686 } 701 }
687 702
OLDNEW
« no previous file with comments | « src/gpu/GrOvalRenderer.cpp ('k') | src/gpu/effects/GrBitmapTextGeoProc.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698