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

Side by Side Diff: src/gpu/GrOvalRenderer.cpp

Issue 1127953003: Remove viewmatrix from GrGeometryProcessor base class (Closed) Base URL: https://skia.googlesource.com/skia.git@cleanup3
Patch Set: 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
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 "GrOvalRenderer.h" 8 #include "GrOvalRenderer.h"
9 9
10 #include "GrBatch.h" 10 #include "GrBatch.h"
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 101
102 GrGLVertToFrag v(kVec4f_GrSLType); 102 GrGLVertToFrag v(kVec4f_GrSLType);
103 args.fPB->addVarying("CircleEdge", &v); 103 args.fPB->addVarying("CircleEdge", &v);
104 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), ce.inCircleEdge()->fNa me); 104 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), ce.inCircleEdge()->fNa me);
105 105
106 // Setup pass through color 106 // Setup pass through color
107 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputC olor, NULL, 107 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputC olor, NULL,
108 &fColorUniform); 108 &fColorUniform);
109 109
110 // Setup position 110 // Setup position
111 this->setupPosition(pb, gpArgs, ce.inPosition()->fName, ce.viewMatri x()); 111 this->setupPosition(pb, gpArgs, ce.inPosition()->fName);
112 112
113 // emit transforms 113 // emit transforms
114 this->emitTransforms(args.fPB, gpArgs->fPositionVar, ce.inPosition() ->fName, 114 this->emitTransforms(args.fPB, gpArgs->fPositionVar, ce.inPosition() ->fName,
115 ce.localMatrix(), args.fTransformsIn, args.fTra nsformsOut); 115 ce.localMatrix(), args.fTransformsIn, args.fTra nsformsOut);
116 116
117 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder( ); 117 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder( );
118 fsBuilder->codeAppendf("float d = length(%s.xy);", v.fsIn()); 118 fsBuilder->codeAppendf("float d = length(%s.xy);", v.fsIn());
119 fsBuilder->codeAppendf("float edgeAlpha = clamp(%s.z * (1.0 - d), 0. 0, 1.0);", v.fsIn()); 119 fsBuilder->codeAppendf("float edgeAlpha = clamp(%s.z * (1.0 - d), 0. 0, 1.0);", v.fsIn());
120 if (ce.isStroked()) { 120 if (ce.isStroked()) {
121 fsBuilder->codeAppendf("float innerAlpha = clamp(%s.z * (d - %s. w), 0.0, 1.0);", 121 fsBuilder->codeAppendf("float innerAlpha = clamp(%s.z * (d - %s. w), 0.0, 1.0);",
122 v.fsIn(), v.fsIn()); 122 v.fsIn(), v.fsIn());
123 fsBuilder->codeAppend("edgeAlpha *= innerAlpha;"); 123 fsBuilder->codeAppend("edgeAlpha *= innerAlpha;");
124 } 124 }
125 125
126 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); 126 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage );
127 } 127 }
128 128
129 static void GenKey(const GrGeometryProcessor& gp, 129 static void GenKey(const GrGeometryProcessor& gp,
130 const GrBatchTracker& bt, 130 const GrBatchTracker& bt,
131 const GrGLSLCaps&, 131 const GrGLSLCaps&,
132 GrProcessorKeyBuilder* b) { 132 GrProcessorKeyBuilder* b) {
133 const BatchTracker& local = bt.cast<BatchTracker>(); 133 const BatchTracker& local = bt.cast<BatchTracker>();
134 const CircleEdgeEffect& circleEffect = gp.cast<CircleEdgeEffect>(); 134 const CircleEdgeEffect& circleEffect = gp.cast<CircleEdgeEffect>();
135 uint16_t key = circleEffect.isStroked() ? 0x1 : 0x0; 135 uint16_t key = circleEffect.isStroked() ? 0x1 : 0x0;
136 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x2 : 0x0; 136 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x2 : 0x0;
137 key |= ComputePosKey(gp.viewMatrix()) << 2;
138 b->add32(key << 16 | local.fInputColorType); 137 b->add32(key << 16 | local.fInputColorType);
139 } 138 }
140 139
141 virtual void setData(const GrGLProgramDataManager& pdman, 140 virtual void setData(const GrGLProgramDataManager& pdman,
142 const GrPrimitiveProcessor& gp, 141 const GrPrimitiveProcessor& gp,
143 const GrBatchTracker& bt) override { 142 const GrBatchTracker& bt) override {
144 this->setUniformViewMatrix(pdman, gp.viewMatrix());
145
146 const BatchTracker& local = bt.cast<BatchTracker>(); 143 const BatchTracker& local = bt.cast<BatchTracker>();
147 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) { 144 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) {
148 GrGLfloat c[4]; 145 GrGLfloat c[4];
149 GrColorToRGBAFloat(local.fColor, c); 146 GrColorToRGBAFloat(local.fColor, c);
150 pdman.set4fv(fColorUniform, 1, c); 147 pdman.set4fv(fColorUniform, 1, c);
151 fColor = local.fColor; 148 fColor = local.fColor;
152 } 149 }
153 } 150 }
154 151
155 private: 152 private:
(...skipping 14 matching lines...) Expand all
170 } 167 }
171 168
172 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override { 169 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override {
173 BatchTracker* local = bt->cast<BatchTracker>(); 170 BatchTracker* local = bt->cast<BatchTracker>();
174 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 171 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
175 local->fUsesLocalCoords = init.fUsesLocalCoords; 172 local->fUsesLocalCoords = init.fUsesLocalCoords;
176 } 173 }
177 174
178 private: 175 private:
179 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) 176 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
180 : INHERITED(SkMatrix::I(), localMatrix) 177 : INHERITED(localMatrix)
181 , fColor(color) { 178 , fColor(color) {
182 this->initClassID<CircleEdgeEffect>(); 179 this->initClassID<CircleEdgeEffect>();
183 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType)); 180 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
184 fInCircleEdge = &this->addVertexAttrib(Attribute("inCircleEdge", 181 fInCircleEdge = &this->addVertexAttrib(Attribute("inCircleEdge",
185 kVec4f_GrVertexAttrib Type)); 182 kVec4f_GrVertexAttrib Type));
186 fStroke = stroke; 183 fStroke = stroke;
187 } 184 }
188 185
189 struct BatchTracker { 186 struct BatchTracker {
190 GrGPInput fInputColorType; 187 GrGPInput fInputColorType;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 GrGLVertToFrag ellipseRadii(kVec4f_GrSLType); 260 GrGLVertToFrag ellipseRadii(kVec4f_GrSLType);
264 args.fPB->addVarying("EllipseRadii", &ellipseRadii); 261 args.fPB->addVarying("EllipseRadii", &ellipseRadii);
265 vsBuilder->codeAppendf("%s = %s;", ellipseRadii.vsOut(), 262 vsBuilder->codeAppendf("%s = %s;", ellipseRadii.vsOut(),
266 ee.inEllipseRadii()->fName); 263 ee.inEllipseRadii()->fName);
267 264
268 // Setup pass through color 265 // Setup pass through color
269 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputC olor, NULL, 266 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputC olor, NULL,
270 &fColorUniform); 267 &fColorUniform);
271 268
272 // Setup position 269 // Setup position
273 this->setupPosition(pb, gpArgs, ee.inPosition()->fName, ee.viewMatri x()); 270 this->setupPosition(pb, gpArgs, ee.inPosition()->fName);
274 271
275 // emit transforms 272 // emit transforms
276 this->emitTransforms(args.fPB, gpArgs->fPositionVar, ee.inPosition() ->fName, 273 this->emitTransforms(args.fPB, gpArgs->fPositionVar, ee.inPosition() ->fName,
277 ee.localMatrix(), args.fTransformsIn, args.fTra nsformsOut); 274 ee.localMatrix(), args.fTransformsIn, args.fTra nsformsOut);
278 275
279 // for outer curve 276 // for outer curve
280 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder( ); 277 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder( );
281 fsBuilder->codeAppendf("vec2 scaledOffset = %s*%s.xy;", ellipseOffse ts.fsIn(), 278 fsBuilder->codeAppendf("vec2 scaledOffset = %s*%s.xy;", ellipseOffse ts.fsIn(),
282 ellipseRadii.fsIn()); 279 ellipseRadii.fsIn());
283 fsBuilder->codeAppend("float test = dot(scaledOffset, scaledOffset) - 1.0;"); 280 fsBuilder->codeAppend("float test = dot(scaledOffset, scaledOffset) - 1.0;");
(...skipping 20 matching lines...) Expand all
304 } 301 }
305 302
306 static void GenKey(const GrGeometryProcessor& gp, 303 static void GenKey(const GrGeometryProcessor& gp,
307 const GrBatchTracker& bt, 304 const GrBatchTracker& bt,
308 const GrGLSLCaps&, 305 const GrGLSLCaps&,
309 GrProcessorKeyBuilder* b) { 306 GrProcessorKeyBuilder* b) {
310 const BatchTracker& local = bt.cast<BatchTracker>(); 307 const BatchTracker& local = bt.cast<BatchTracker>();
311 const EllipseEdgeEffect& ellipseEffect = gp.cast<EllipseEdgeEffect>( ); 308 const EllipseEdgeEffect& ellipseEffect = gp.cast<EllipseEdgeEffect>( );
312 uint16_t key = ellipseEffect.isStroked() ? 0x1 : 0x0; 309 uint16_t key = ellipseEffect.isStroked() ? 0x1 : 0x0;
313 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x2 : 0x0; 310 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x2 : 0x0;
314 key |= ComputePosKey(gp.viewMatrix()) << 2;
315 b->add32(key << 16 | local.fInputColorType); 311 b->add32(key << 16 | local.fInputColorType);
316 } 312 }
317 313
318 virtual void setData(const GrGLProgramDataManager& pdman, 314 virtual void setData(const GrGLProgramDataManager& pdman,
319 const GrPrimitiveProcessor& gp, 315 const GrPrimitiveProcessor& gp,
320 const GrBatchTracker& bt) override { 316 const GrBatchTracker& bt) override {
321 this->setUniformViewMatrix(pdman, gp.viewMatrix());
322 317
323 const BatchTracker& local = bt.cast<BatchTracker>(); 318 const BatchTracker& local = bt.cast<BatchTracker>();
324 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) { 319 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) {
325 GrGLfloat c[4]; 320 GrGLfloat c[4];
326 GrColorToRGBAFloat(local.fColor, c); 321 GrColorToRGBAFloat(local.fColor, c);
327 pdman.set4fv(fColorUniform, 1, c); 322 pdman.set4fv(fColorUniform, 1, c);
328 fColor = local.fColor; 323 fColor = local.fColor;
329 } 324 }
330 } 325 }
331 326
(...skipping 16 matching lines...) Expand all
348 } 343 }
349 344
350 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override { 345 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override {
351 BatchTracker* local = bt->cast<BatchTracker>(); 346 BatchTracker* local = bt->cast<BatchTracker>();
352 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 347 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
353 local->fUsesLocalCoords = init.fUsesLocalCoords; 348 local->fUsesLocalCoords = init.fUsesLocalCoords;
354 } 349 }
355 350
356 private: 351 private:
357 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) 352 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
358 : INHERITED(SkMatrix::I(), localMatrix) 353 : INHERITED(localMatrix)
359 , fColor(color) { 354 , fColor(color) {
360 this->initClassID<EllipseEdgeEffect>(); 355 this->initClassID<EllipseEdgeEffect>();
361 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType)); 356 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
362 fInEllipseOffset = &this->addVertexAttrib(Attribute("inEllipseOffset", 357 fInEllipseOffset = &this->addVertexAttrib(Attribute("inEllipseOffset",
363 kVec2f_GrVertexAtt ribType)); 358 kVec2f_GrVertexAtt ribType));
364 fInEllipseRadii = &this->addVertexAttrib(Attribute("inEllipseRadii", 359 fInEllipseRadii = &this->addVertexAttrib(Attribute("inEllipseRadii",
365 kVec4f_GrVertexAttr ibType)); 360 kVec4f_GrVertexAttr ibType));
366 fStroke = stroke; 361 fStroke = stroke;
367 } 362 }
368 363
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 } 409 }
415 410
416 virtual ~DIEllipseEdgeEffect() {} 411 virtual ~DIEllipseEdgeEffect() {}
417 412
418 const char* name() const override { return "DIEllipseEdge"; } 413 const char* name() const override { return "DIEllipseEdge"; }
419 414
420 const Attribute* inPosition() const { return fInPosition; } 415 const Attribute* inPosition() const { return fInPosition; }
421 const Attribute* inEllipseOffsets0() const { return fInEllipseOffsets0; } 416 const Attribute* inEllipseOffsets0() const { return fInEllipseOffsets0; }
422 const Attribute* inEllipseOffsets1() const { return fInEllipseOffsets1; } 417 const Attribute* inEllipseOffsets1() const { return fInEllipseOffsets1; }
423 GrColor color() const { return fColor; } 418 GrColor color() const { return fColor; }
419 const SkMatrix& viewMatrix() const { return fViewMatrix; }
424 420
425 inline Mode getMode() const { return fMode; } 421 inline Mode getMode() const { return fMode; }
426 422
427 class GLProcessor : public GrGLGeometryProcessor { 423 class GLProcessor : public GrGLGeometryProcessor {
428 public: 424 public:
429 GLProcessor(const GrGeometryProcessor&, 425 GLProcessor(const GrGeometryProcessor&,
430 const GrBatchTracker&) 426 const GrBatchTracker&)
431 : fColor(GrColor_ILLEGAL) {} 427 : fColor(GrColor_ILLEGAL) {}
432 428
433 void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override{ 429 void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override{
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 } 498 }
503 499
504 static void GenKey(const GrGeometryProcessor& gp, 500 static void GenKey(const GrGeometryProcessor& gp,
505 const GrBatchTracker& bt, 501 const GrBatchTracker& bt,
506 const GrGLSLCaps&, 502 const GrGLSLCaps&,
507 GrProcessorKeyBuilder* b) { 503 GrProcessorKeyBuilder* b) {
508 const BatchTracker& local = bt.cast<BatchTracker>(); 504 const BatchTracker& local = bt.cast<BatchTracker>();
509 const DIEllipseEdgeEffect& ellipseEffect = gp.cast<DIEllipseEdgeEffe ct>(); 505 const DIEllipseEdgeEffect& ellipseEffect = gp.cast<DIEllipseEdgeEffe ct>();
510 uint16_t key = ellipseEffect.getMode(); 506 uint16_t key = ellipseEffect.getMode();
511 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 << 8 : 0x0; 507 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 << 8 : 0x0;
512 key |= ComputePosKey(gp.viewMatrix()) << 9; 508 key |= ComputePosKey(ellipseEffect.viewMatrix()) << 9;
513 b->add32(key << 16 | local.fInputColorType); 509 b->add32(key << 16 | local.fInputColorType);
514 } 510 }
515 511
516 virtual void setData(const GrGLProgramDataManager& pdman, 512 virtual void setData(const GrGLProgramDataManager& pdman,
517 const GrPrimitiveProcessor& gp, 513 const GrPrimitiveProcessor& gp,
518 const GrBatchTracker& bt) override { 514 const GrBatchTracker& bt) override {
519 this->setUniformViewMatrix(pdman, gp.viewMatrix()); 515 const DIEllipseEdgeEffect& dee = gp.cast<DIEllipseEdgeEffect>();
516 this->setUniformViewMatrix(pdman, dee.viewMatrix());
520 517
521 const BatchTracker& local = bt.cast<BatchTracker>(); 518 const BatchTracker& local = bt.cast<BatchTracker>();
522 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) { 519 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) {
523 GrGLfloat c[4]; 520 GrGLfloat c[4];
524 GrColorToRGBAFloat(local.fColor, c); 521 GrColorToRGBAFloat(local.fColor, c);
525 pdman.set4fv(fColorUniform, 1, c); 522 pdman.set4fv(fColorUniform, 1, c);
526 fColor = local.fColor; 523 fColor = local.fColor;
527 } 524 }
528 } 525 }
529 526
(...skipping 16 matching lines...) Expand all
546 } 543 }
547 544
548 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override { 545 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override {
549 BatchTracker* local = bt->cast<BatchTracker>(); 546 BatchTracker* local = bt->cast<BatchTracker>();
550 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 547 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
551 local->fUsesLocalCoords = init.fUsesLocalCoords; 548 local->fUsesLocalCoords = init.fUsesLocalCoords;
552 } 549 }
553 550
554 private: 551 private:
555 DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode) 552 DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode)
556 : INHERITED(viewMatrix) 553 : fColor(color)
557 , fColor(color) { 554 , fViewMatrix(viewMatrix) {
558 this->initClassID<DIEllipseEdgeEffect>(); 555 this->initClassID<DIEllipseEdgeEffect>();
559 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType)); 556 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
560 fInEllipseOffsets0 = &this->addVertexAttrib(Attribute("inEllipseOffsets0 ", 557 fInEllipseOffsets0 = &this->addVertexAttrib(Attribute("inEllipseOffsets0 ",
561 kVec2f_GrVertexA ttribType)); 558 kVec2f_GrVertexA ttribType));
562 fInEllipseOffsets1 = &this->addVertexAttrib(Attribute("inEllipseOffsets1 ", 559 fInEllipseOffsets1 = &this->addVertexAttrib(Attribute("inEllipseOffsets1 ",
563 kVec2f_GrVertexA ttribType)); 560 kVec2f_GrVertexA ttribType));
564 fMode = mode; 561 fMode = mode;
565 } 562 }
566 563
567 struct BatchTracker { 564 struct BatchTracker {
568 GrGPInput fInputColorType; 565 GrGPInput fInputColorType;
569 GrColor fColor; 566 GrColor fColor;
570 bool fUsesLocalCoords; 567 bool fUsesLocalCoords;
571 }; 568 };
572 569
573 const Attribute* fInPosition; 570 const Attribute* fInPosition;
574 const Attribute* fInEllipseOffsets0; 571 const Attribute* fInEllipseOffsets0;
575 const Attribute* fInEllipseOffsets1; 572 const Attribute* fInEllipseOffsets1;
576 GrColor fColor; 573 GrColor fColor;
robertphillips 2015/05/14 16:35:24 Can this be const ?
574 SkMatrix fViewMatrix;
577 Mode fMode; 575 Mode fMode;
578 576
579 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 577 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
580 578
581 typedef GrGeometryProcessor INHERITED; 579 typedef GrGeometryProcessor INHERITED;
582 }; 580 };
583 581
584 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DIEllipseEdgeEffect); 582 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DIEllipseEdgeEffect);
585 583
586 GrGeometryProcessor* DIEllipseEdgeEffect::TestCreate(SkRandom* random, 584 GrGeometryProcessor* DIEllipseEdgeEffect::TestCreate(SkRandom* random,
(...skipping 1480 matching lines...) Expand 10 before | Expand all | Expand 10 after
2067 } 2065 }
2068 2066
2069 BATCH_TEST_DEFINE(RRectBatch) { 2067 BATCH_TEST_DEFINE(RRectBatch) {
2070 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random); 2068 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random);
2071 GrColor color = GrRandomColor(random); 2069 GrColor color = GrRandomColor(random);
2072 const SkRRect& rrect = GrTest::TestRRectSimple(random); 2070 const SkRRect& rrect = GrTest::TestRRectSimple(random);
2073 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra ndom)); 2071 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra ndom));
2074 } 2072 }
2075 2073
2076 #endif 2074 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698