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

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

Issue 1131513005: remove localmatrix from GrGeometryProcessor base class (Closed) Base URL: https://skia.googlesource.com/skia.git@cleanup4
Patch Set: tweaks Created 5 years, 7 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/GrBezierEffect.h ('k') | src/gpu/effects/GrBitmapTextGeoProc.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 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 GrColorToRGBAFloat(local.fColor, c); 43 GrColorToRGBAFloat(local.fColor, c);
44 pdman.set4fv(fColorUniform, 1, c); 44 pdman.set4fv(fColorUniform, 1, c);
45 fColor = local.fColor; 45 fColor = local.fColor;
46 } 46 }
47 if (0xff != local.fCoverageScale && fCoverageScale != local.fCoverageSca le) { 47 if (0xff != local.fCoverageScale && fCoverageScale != local.fCoverageSca le) {
48 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(local.fCov erageScale)); 48 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(local.fCov erageScale));
49 fCoverageScale = local.fCoverageScale; 49 fCoverageScale = local.fCoverageScale;
50 } 50 }
51 } 51 }
52 52
53 void setTransformData(const GrPrimitiveProcessor& primProc,
54 const GrGLProgramDataManager& pdman,
55 int index,
56 const SkTArray<const GrCoordTransform*, true>& transfo rms) override {
57 this->setTransformDataHelper<GrConicEffect>(primProc, pdman, index, tran sforms);
58 }
59
53 private: 60 private:
54 GrColor fColor; 61 GrColor fColor;
55 uint8_t fCoverageScale; 62 uint8_t fCoverageScale;
56 GrPrimitiveEdgeType fEdgeType; 63 GrPrimitiveEdgeType fEdgeType;
57 UniformHandle fColorUniform; 64 UniformHandle fColorUniform;
58 UniformHandle fCoverageScaleUniform; 65 UniformHandle fCoverageScaleUniform;
59 66
60 typedef GrGLGeometryProcessor INHERITED; 67 typedef GrGLGeometryProcessor INHERITED;
61 }; 68 };
62 69
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 170
164 void GrGLConicEffect::GenKey(const GrGeometryProcessor& gp, 171 void GrGLConicEffect::GenKey(const GrGeometryProcessor& gp,
165 const GrBatchTracker& bt, 172 const GrBatchTracker& bt,
166 const GrGLSLCaps&, 173 const GrGLSLCaps&,
167 GrProcessorKeyBuilder* b) { 174 GrProcessorKeyBuilder* b) {
168 const GrConicEffect& ce = gp.cast<GrConicEffect>(); 175 const GrConicEffect& ce = gp.cast<GrConicEffect>();
169 const ConicBatchTracker& local = bt.cast<ConicBatchTracker>(); 176 const ConicBatchTracker& local = bt.cast<ConicBatchTracker>();
170 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2; 177 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
171 key |= kUniform_GrGPInput == local.fInputColorType ? 0x4 : 0x0; 178 key |= kUniform_GrGPInput == local.fInputColorType ? 0x4 : 0x0;
172 key |= 0xff != local.fCoverageScale ? 0x8 : 0x0; 179 key |= 0xff != local.fCoverageScale ? 0x8 : 0x0;
173 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x10 : 0x0; 180 key |= local.fUsesLocalCoords && ce.localMatrix().hasPerspective() ? 0x10 : 0x0;
174 key |= ComputePosKey(ce.viewMatrix()) << 5; 181 key |= ComputePosKey(ce.viewMatrix()) << 5;
175 b->add32(key); 182 b->add32(key);
176 } 183 }
177 184
178 ////////////////////////////////////////////////////////////////////////////// 185 //////////////////////////////////////////////////////////////////////////////
179 186
180 GrConicEffect::~GrConicEffect() {} 187 GrConicEffect::~GrConicEffect() {}
181 188
182 void GrConicEffect::getGLProcessorKey(const GrBatchTracker& bt, 189 void GrConicEffect::getGLProcessorKey(const GrBatchTracker& bt,
183 const GrGLSLCaps& caps, 190 const GrGLSLCaps& caps,
184 GrProcessorKeyBuilder* b) const { 191 GrProcessorKeyBuilder* b) const {
185 GrGLConicEffect::GenKey(*this, bt, caps, b); 192 GrGLConicEffect::GenKey(*this, bt, caps, b);
186 } 193 }
187 194
188 GrGLPrimitiveProcessor* GrConicEffect::createGLInstance(const GrBatchTracker& bt , 195 GrGLPrimitiveProcessor* GrConicEffect::createGLInstance(const GrBatchTracker& bt ,
189 const GrGLSLCaps&) const { 196 const GrGLSLCaps&) const {
190 return SkNEW_ARGS(GrGLConicEffect, (*this, bt)); 197 return SkNEW_ARGS(GrGLConicEffect, (*this, bt));
191 } 198 }
192 199
193 GrConicEffect::GrConicEffect(GrColor color, const SkMatrix& viewMatrix, uint8_t coverage, 200 GrConicEffect::GrConicEffect(GrColor color, const SkMatrix& viewMatrix, uint8_t coverage,
194 GrPrimitiveEdgeType edgeType, const SkMatrix& local Matrix) 201 GrPrimitiveEdgeType edgeType, const SkMatrix& local Matrix)
195 : INHERITED(localMatrix) 202 : fColor(color)
196 , fColor(color)
197 , fViewMatrix(viewMatrix) 203 , fViewMatrix(viewMatrix)
204 , fLocalMatrix(viewMatrix)
198 , fCoverageScale(coverage) 205 , fCoverageScale(coverage)
199 , fEdgeType(edgeType) { 206 , fEdgeType(edgeType) {
200 this->initClassID<GrConicEffect>(); 207 this->initClassID<GrConicEffect>();
201 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex AttribType)); 208 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex AttribType));
202 fInConicCoeffs = &this->addVertexAttrib(Attribute("inConicCoeffs", 209 fInConicCoeffs = &this->addVertexAttrib(Attribute("inConicCoeffs",
203 kVec4f_GrVertexAttribTyp e)); 210 kVec4f_GrVertexAttribTyp e));
204 } 211 }
205 212
206 void GrConicEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& i nit) const { 213 void GrConicEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& i nit) const {
207 ConicBatchTracker* local = bt->cast<ConicBatchTracker>(); 214 ConicBatchTracker* local = bt->cast<ConicBatchTracker>();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 GrColorToRGBAFloat(local.fColor, c); 271 GrColorToRGBAFloat(local.fColor, c);
265 pdman.set4fv(fColorUniform, 1, c); 272 pdman.set4fv(fColorUniform, 1, c);
266 fColor = local.fColor; 273 fColor = local.fColor;
267 } 274 }
268 if (0xff != local.fCoverageScale && local.fCoverageScale != fCoverageSca le) { 275 if (0xff != local.fCoverageScale && local.fCoverageScale != fCoverageSca le) {
269 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(local.fCov erageScale)); 276 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(local.fCov erageScale));
270 fCoverageScale = local.fCoverageScale; 277 fCoverageScale = local.fCoverageScale;
271 } 278 }
272 } 279 }
273 280
281 void setTransformData(const GrPrimitiveProcessor& primProc,
282 const GrGLProgramDataManager& pdman,
283 int index,
284 const SkTArray<const GrCoordTransform*, true>& transfo rms) override {
285 this->setTransformDataHelper<GrQuadEffect>(primProc, pdman, index, trans forms);
286 }
287
274 private: 288 private:
275 GrColor fColor; 289 GrColor fColor;
276 uint8_t fCoverageScale; 290 uint8_t fCoverageScale;
277 GrPrimitiveEdgeType fEdgeType; 291 GrPrimitiveEdgeType fEdgeType;
278 UniformHandle fColorUniform; 292 UniformHandle fColorUniform;
279 UniformHandle fCoverageScaleUniform; 293 UniformHandle fCoverageScaleUniform;
280 294
281 typedef GrGLGeometryProcessor INHERITED; 295 typedef GrGLGeometryProcessor INHERITED;
282 }; 296 };
283 297
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 384
371 void GrGLQuadEffect::GenKey(const GrGeometryProcessor& gp, 385 void GrGLQuadEffect::GenKey(const GrGeometryProcessor& gp,
372 const GrBatchTracker& bt, 386 const GrBatchTracker& bt,
373 const GrGLSLCaps&, 387 const GrGLSLCaps&,
374 GrProcessorKeyBuilder* b) { 388 GrProcessorKeyBuilder* b) {
375 const GrQuadEffect& ce = gp.cast<GrQuadEffect>(); 389 const GrQuadEffect& ce = gp.cast<GrQuadEffect>();
376 const QuadBatchTracker& local = bt.cast<QuadBatchTracker>(); 390 const QuadBatchTracker& local = bt.cast<QuadBatchTracker>();
377 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2; 391 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
378 key |= kUniform_GrGPInput == local.fInputColorType ? 0x4 : 0x0; 392 key |= kUniform_GrGPInput == local.fInputColorType ? 0x4 : 0x0;
379 key |= 0xff != local.fCoverageScale ? 0x8 : 0x0; 393 key |= 0xff != local.fCoverageScale ? 0x8 : 0x0;
380 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x10 : 0x0; 394 key |= local.fUsesLocalCoords && ce.localMatrix().hasPerspective() ? 0x10 : 0x0;
381 key |= ComputePosKey(ce.viewMatrix()) << 5; 395 key |= ComputePosKey(ce.viewMatrix()) << 5;
382 b->add32(key); 396 b->add32(key);
383 } 397 }
384 398
385 ////////////////////////////////////////////////////////////////////////////// 399 //////////////////////////////////////////////////////////////////////////////
386 400
387 GrQuadEffect::~GrQuadEffect() {} 401 GrQuadEffect::~GrQuadEffect() {}
388 402
389 void GrQuadEffect::getGLProcessorKey(const GrBatchTracker& bt, 403 void GrQuadEffect::getGLProcessorKey(const GrBatchTracker& bt,
390 const GrGLSLCaps& caps, 404 const GrGLSLCaps& caps,
391 GrProcessorKeyBuilder* b) const { 405 GrProcessorKeyBuilder* b) const {
392 GrGLQuadEffect::GenKey(*this, bt, caps, b); 406 GrGLQuadEffect::GenKey(*this, bt, caps, b);
393 } 407 }
394 408
395 GrGLPrimitiveProcessor* GrQuadEffect::createGLInstance(const GrBatchTracker& bt, 409 GrGLPrimitiveProcessor* GrQuadEffect::createGLInstance(const GrBatchTracker& bt,
396 const GrGLSLCaps&) const { 410 const GrGLSLCaps&) const {
397 return SkNEW_ARGS(GrGLQuadEffect, (*this, bt)); 411 return SkNEW_ARGS(GrGLQuadEffect, (*this, bt));
398 } 412 }
399 413
400 GrQuadEffect::GrQuadEffect(GrColor color, const SkMatrix& viewMatrix, uint8_t co verage, 414 GrQuadEffect::GrQuadEffect(GrColor color, const SkMatrix& viewMatrix, uint8_t co verage,
401 GrPrimitiveEdgeType edgeType, const SkMatrix& localMa trix) 415 GrPrimitiveEdgeType edgeType, const SkMatrix& localMa trix)
402 : INHERITED(localMatrix) 416 : fColor(color)
403 , fColor(color)
404 , fViewMatrix(viewMatrix) 417 , fViewMatrix(viewMatrix)
418 , fLocalMatrix(localMatrix)
405 , fCoverageScale(coverage) 419 , fCoverageScale(coverage)
406 , fEdgeType(edgeType) { 420 , fEdgeType(edgeType) {
407 this->initClassID<GrQuadEffect>(); 421 this->initClassID<GrQuadEffect>();
408 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex AttribType)); 422 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex AttribType));
409 fInHairQuadEdge = &this->addVertexAttrib(Attribute("inHairQuadEdge", 423 fInHairQuadEdge = &this->addVertexAttrib(Attribute("inHairQuadEdge",
410 kVec4f_GrVertexAttribTyp e)); 424 kVec4f_GrVertexAttribTyp e));
411 } 425 }
412 426
413 void GrQuadEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& in it) const { 427 void GrQuadEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& in it) const {
414 QuadBatchTracker* local = bt->cast<QuadBatchTracker>(); 428 QuadBatchTracker* local = bt->cast<QuadBatchTracker>();
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inCubicCoeffs()->fName); 516 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inCubicCoeffs()->fName);
503 517
504 // Setup pass through color 518 // Setup pass through color
505 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol or, NULL, 519 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol or, NULL,
506 &fColorUniform); 520 &fColorUniform);
507 521
508 // Setup position 522 // Setup position
509 this->setupPosition(args.fPB, gpArgs, gp.inPosition()->fName, gp.viewMatrix( )); 523 this->setupPosition(args.fPB, gpArgs, gp.inPosition()->fName, gp.viewMatrix( ));
510 524
511 // emit transforms with position 525 // emit transforms with position
512 this->emitTransforms(args.fPB, gpArgs->fPositionVar, gp.inPosition()->fName, gp.localMatrix(), 526 this->emitTransforms(args.fPB, gpArgs->fPositionVar, gp.inPosition()->fName, args.fTransformsIn,
513 args.fTransformsIn, args.fTransformsOut); 527 args.fTransformsOut);
514 528
515 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 529 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
516 530
517 GrGLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, kHigh_GrSLPrecision ); 531 GrGLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, kHigh_GrSLPrecision );
518 GrGLShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, kHigh_GrSLPrecision); 532 GrGLShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, kHigh_GrSLPrecision);
519 GrGLShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, kHigh_GrSLPrecision); 533 GrGLShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, kHigh_GrSLPrecision);
520 GrGLShaderVar dfdx("dfdx", kFloat_GrSLType, 0, kHigh_GrSLPrecision); 534 GrGLShaderVar dfdx("dfdx", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
521 GrGLShaderVar dfdy("dfdy", kFloat_GrSLType, 0, kHigh_GrSLPrecision); 535 GrGLShaderVar dfdy("dfdy", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
522 GrGLShaderVar gF("gF", kVec2f_GrSLType, 0, kHigh_GrSLPrecision); 536 GrGLShaderVar gF("gF", kVec2f_GrSLType, 0, kHigh_GrSLPrecision);
523 GrGLShaderVar gFM("gFM", kFloat_GrSLType, 0, kHigh_GrSLPrecision); 537 GrGLShaderVar gFM("gFM", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 } 614 }
601 615
602 void GrGLCubicEffect::GenKey(const GrGeometryProcessor& gp, 616 void GrGLCubicEffect::GenKey(const GrGeometryProcessor& gp,
603 const GrBatchTracker& bt, 617 const GrBatchTracker& bt,
604 const GrGLSLCaps&, 618 const GrGLSLCaps&,
605 GrProcessorKeyBuilder* b) { 619 GrProcessorKeyBuilder* b) {
606 const GrCubicEffect& ce = gp.cast<GrCubicEffect>(); 620 const GrCubicEffect& ce = gp.cast<GrCubicEffect>();
607 const CubicBatchTracker& local = bt.cast<CubicBatchTracker>(); 621 const CubicBatchTracker& local = bt.cast<CubicBatchTracker>();
608 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2; 622 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
609 key |= kUniform_GrGPInput == local.fInputColorType ? 0x4 : 0x8; 623 key |= kUniform_GrGPInput == local.fInputColorType ? 0x4 : 0x8;
610 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x10 : 0x0;
611 key |= ComputePosKey(ce.viewMatrix()) << 5; 624 key |= ComputePosKey(ce.viewMatrix()) << 5;
612 b->add32(key); 625 b->add32(key);
613 } 626 }
614 627
615 ////////////////////////////////////////////////////////////////////////////// 628 //////////////////////////////////////////////////////////////////////////////
616 629
617 GrCubicEffect::~GrCubicEffect() {} 630 GrCubicEffect::~GrCubicEffect() {}
618 631
619 void GrCubicEffect::getGLProcessorKey(const GrBatchTracker& bt, 632 void GrCubicEffect::getGLProcessorKey(const GrBatchTracker& bt,
620 const GrGLSLCaps& caps, 633 const GrGLSLCaps& caps,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 GrGeometryProcessor* gp; 668 GrGeometryProcessor* gp;
656 do { 669 do {
657 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( 670 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>(
658 random->nextULessThan(kGrPro cessorEdgeTypeCnt)); 671 random->nextULessThan(kGrPro cessorEdgeTypeCnt));
659 gp = GrCubicEffect::Create(GrRandomColor(random), 672 gp = GrCubicEffect::Create(GrRandomColor(random),
660 GrTest::TestMatrix(random), edgeType, caps); 673 GrTest::TestMatrix(random), edgeType, caps);
661 } while (NULL == gp); 674 } while (NULL == gp);
662 return gp; 675 return gp;
663 } 676 }
664 677
OLDNEW
« no previous file with comments | « src/gpu/effects/GrBezierEffect.h ('k') | src/gpu/effects/GrBitmapTextGeoProc.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698