OLD | NEW |
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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 | 71 |
72 class CircleEdgeEffect : public GrGeometryProcessor { | 72 class CircleEdgeEffect : public GrGeometryProcessor { |
73 public: | 73 public: |
74 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri
x& localMatrix) { | 74 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri
x& localMatrix) { |
75 return SkNEW_ARGS(CircleEdgeEffect, (color, stroke, localMatrix)); | 75 return SkNEW_ARGS(CircleEdgeEffect, (color, stroke, localMatrix)); |
76 } | 76 } |
77 | 77 |
78 const Attribute* inPosition() const { return fInPosition; } | 78 const Attribute* inPosition() const { return fInPosition; } |
79 const Attribute* inCircleEdge() const { return fInCircleEdge; } | 79 const Attribute* inCircleEdge() const { return fInCircleEdge; } |
80 GrColor color() const { return fColor; } | 80 GrColor color() const { return fColor; } |
| 81 const SkMatrix& localMatrix() const { return fLocalMatrix; } |
81 virtual ~CircleEdgeEffect() {} | 82 virtual ~CircleEdgeEffect() {} |
82 | 83 |
83 const char* name() const override { return "CircleEdge"; } | 84 const char* name() const override { return "CircleEdge"; } |
84 | 85 |
85 inline bool isStroked() const { return fStroke; } | 86 inline bool isStroked() const { return fStroke; } |
86 | 87 |
87 class GLProcessor : public GrGLGeometryProcessor { | 88 class GLProcessor : public GrGLGeometryProcessor { |
88 public: | 89 public: |
89 GLProcessor(const GrGeometryProcessor&, | 90 GLProcessor(const GrGeometryProcessor&, |
90 const GrBatchTracker&) | 91 const GrBatchTracker&) |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 } | 125 } |
125 | 126 |
126 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage
); | 127 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage
); |
127 } | 128 } |
128 | 129 |
129 static void GenKey(const GrGeometryProcessor& gp, | 130 static void GenKey(const GrGeometryProcessor& gp, |
130 const GrBatchTracker& bt, | 131 const GrBatchTracker& bt, |
131 const GrGLSLCaps&, | 132 const GrGLSLCaps&, |
132 GrProcessorKeyBuilder* b) { | 133 GrProcessorKeyBuilder* b) { |
133 const BatchTracker& local = bt.cast<BatchTracker>(); | 134 const BatchTracker& local = bt.cast<BatchTracker>(); |
134 const CircleEdgeEffect& circleEffect = gp.cast<CircleEdgeEffect>(); | 135 const CircleEdgeEffect& ce = gp.cast<CircleEdgeEffect>(); |
135 uint16_t key = circleEffect.isStroked() ? 0x1 : 0x0; | 136 uint16_t key = ce.isStroked() ? 0x1 : 0x0; |
136 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ?
0x2 : 0x0; | 137 key |= local.fUsesLocalCoords && ce.localMatrix().hasPerspective() ?
0x2 : 0x0; |
137 b->add32(key << 16 | local.fInputColorType); | 138 b->add32(key << 16 | local.fInputColorType); |
138 } | 139 } |
139 | 140 |
140 virtual void setData(const GrGLProgramDataManager& pdman, | 141 virtual void setData(const GrGLProgramDataManager& pdman, |
141 const GrPrimitiveProcessor& gp, | 142 const GrPrimitiveProcessor& gp, |
142 const GrBatchTracker& bt) override { | 143 const GrBatchTracker& bt) override { |
143 const BatchTracker& local = bt.cast<BatchTracker>(); | 144 const BatchTracker& local = bt.cast<BatchTracker>(); |
144 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f
Color) { | 145 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f
Color) { |
145 GrGLfloat c[4]; | 146 GrGLfloat c[4]; |
146 GrColorToRGBAFloat(local.fColor, c); | 147 GrColorToRGBAFloat(local.fColor, c); |
147 pdman.set4fv(fColorUniform, 1, c); | 148 pdman.set4fv(fColorUniform, 1, c); |
148 fColor = local.fColor; | 149 fColor = local.fColor; |
149 } | 150 } |
150 } | 151 } |
151 | 152 |
| 153 void setTransformData(const GrPrimitiveProcessor& primProc, |
| 154 const GrGLProgramDataManager& pdman, |
| 155 int index, |
| 156 const SkTArray<const GrCoordTransform*, true>& tra
nsforms) override { |
| 157 this->setTransformDataHelper<CircleEdgeEffect>(primProc, pdman, inde
x, transforms); |
| 158 } |
| 159 |
152 private: | 160 private: |
153 GrColor fColor; | 161 GrColor fColor; |
154 UniformHandle fColorUniform; | 162 UniformHandle fColorUniform; |
155 typedef GrGLGeometryProcessor INHERITED; | 163 typedef GrGLGeometryProcessor INHERITED; |
156 }; | 164 }; |
157 | 165 |
158 virtual void getGLProcessorKey(const GrBatchTracker& bt, | 166 virtual void getGLProcessorKey(const GrBatchTracker& bt, |
159 const GrGLSLCaps& caps, | 167 const GrGLSLCaps& caps, |
160 GrProcessorKeyBuilder* b) const override { | 168 GrProcessorKeyBuilder* b) const override { |
161 GLProcessor::GenKey(*this, bt, caps, b); | 169 GLProcessor::GenKey(*this, bt, caps, b); |
162 } | 170 } |
163 | 171 |
164 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, | 172 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, |
165 const GrGLSLCaps&) const ov
erride { | 173 const GrGLSLCaps&) const ov
erride { |
166 return SkNEW_ARGS(GLProcessor, (*this, bt)); | 174 return SkNEW_ARGS(GLProcessor, (*this, bt)); |
167 } | 175 } |
168 | 176 |
169 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const
override { | 177 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const
override { |
170 BatchTracker* local = bt->cast<BatchTracker>(); | 178 BatchTracker* local = bt->cast<BatchTracker>(); |
171 local->fInputColorType = GetColorInputType(&local->fColor, this->color()
, init, false); | 179 local->fInputColorType = GetColorInputType(&local->fColor, this->color()
, init, false); |
172 local->fUsesLocalCoords = init.fUsesLocalCoords; | 180 local->fUsesLocalCoords = init.fUsesLocalCoords; |
173 } | 181 } |
174 | 182 |
175 private: | 183 private: |
176 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) | 184 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) |
177 : INHERITED(localMatrix) | 185 : fColor(color) |
178 , fColor(color) { | 186 , fLocalMatrix(localMatrix) { |
179 this->initClassID<CircleEdgeEffect>(); | 187 this->initClassID<CircleEdgeEffect>(); |
180 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType)); | 188 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType)); |
181 fInCircleEdge = &this->addVertexAttrib(Attribute("inCircleEdge", | 189 fInCircleEdge = &this->addVertexAttrib(Attribute("inCircleEdge", |
182 kVec4f_GrVertexAttrib
Type)); | 190 kVec4f_GrVertexAttrib
Type)); |
183 fStroke = stroke; | 191 fStroke = stroke; |
184 } | 192 } |
185 | 193 |
186 struct BatchTracker { | 194 struct BatchTracker { |
187 GrGPInput fInputColorType; | 195 GrGPInput fInputColorType; |
188 GrColor fColor; | 196 GrColor fColor; |
189 bool fUsesLocalCoords; | 197 bool fUsesLocalCoords; |
190 }; | 198 }; |
191 | 199 |
192 GrColor fColor; | 200 GrColor fColor; |
| 201 SkMatrix fLocalMatrix; |
193 const Attribute* fInPosition; | 202 const Attribute* fInPosition; |
194 const Attribute* fInCircleEdge; | 203 const Attribute* fInCircleEdge; |
195 bool fStroke; | 204 bool fStroke; |
196 | 205 |
197 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; | 206 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; |
198 | 207 |
199 typedef GrGeometryProcessor INHERITED; | 208 typedef GrGeometryProcessor INHERITED; |
200 }; | 209 }; |
201 | 210 |
202 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(CircleEdgeEffect); | 211 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(CircleEdgeEffect); |
(...skipping 24 matching lines...) Expand all Loading... |
227 } | 236 } |
228 | 237 |
229 virtual ~EllipseEdgeEffect() {} | 238 virtual ~EllipseEdgeEffect() {} |
230 | 239 |
231 const char* name() const override { return "EllipseEdge"; } | 240 const char* name() const override { return "EllipseEdge"; } |
232 | 241 |
233 const Attribute* inPosition() const { return fInPosition; } | 242 const Attribute* inPosition() const { return fInPosition; } |
234 const Attribute* inEllipseOffset() const { return fInEllipseOffset; } | 243 const Attribute* inEllipseOffset() const { return fInEllipseOffset; } |
235 const Attribute* inEllipseRadii() const { return fInEllipseRadii; } | 244 const Attribute* inEllipseRadii() const { return fInEllipseRadii; } |
236 GrColor color() const { return fColor; } | 245 GrColor color() const { return fColor; } |
| 246 const SkMatrix& localMatrix() const { return fLocalMatrix; } |
237 | 247 |
238 inline bool isStroked() const { return fStroke; } | 248 inline bool isStroked() const { return fStroke; } |
239 | 249 |
240 class GLProcessor : public GrGLGeometryProcessor { | 250 class GLProcessor : public GrGLGeometryProcessor { |
241 public: | 251 public: |
242 GLProcessor(const GrGeometryProcessor&, | 252 GLProcessor(const GrGeometryProcessor&, |
243 const GrBatchTracker&) | 253 const GrBatchTracker&) |
244 : fColor(GrColor_ILLEGAL) {} | 254 : fColor(GrColor_ILLEGAL) {} |
245 | 255 |
246 void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override{ | 256 void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override{ |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 } | 308 } |
299 | 309 |
300 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage
); | 310 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage
); |
301 } | 311 } |
302 | 312 |
303 static void GenKey(const GrGeometryProcessor& gp, | 313 static void GenKey(const GrGeometryProcessor& gp, |
304 const GrBatchTracker& bt, | 314 const GrBatchTracker& bt, |
305 const GrGLSLCaps&, | 315 const GrGLSLCaps&, |
306 GrProcessorKeyBuilder* b) { | 316 GrProcessorKeyBuilder* b) { |
307 const BatchTracker& local = bt.cast<BatchTracker>(); | 317 const BatchTracker& local = bt.cast<BatchTracker>(); |
308 const EllipseEdgeEffect& ellipseEffect = gp.cast<EllipseEdgeEffect>(
); | 318 const EllipseEdgeEffect& ee = gp.cast<EllipseEdgeEffect>(); |
309 uint16_t key = ellipseEffect.isStroked() ? 0x1 : 0x0; | 319 uint16_t key = ee.isStroked() ? 0x1 : 0x0; |
310 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ?
0x2 : 0x0; | 320 key |= local.fUsesLocalCoords && ee.localMatrix().hasPerspective() ?
0x2 : 0x0; |
311 b->add32(key << 16 | local.fInputColorType); | 321 b->add32(key << 16 | local.fInputColorType); |
312 } | 322 } |
313 | 323 |
314 virtual void setData(const GrGLProgramDataManager& pdman, | 324 virtual void setData(const GrGLProgramDataManager& pdman, |
315 const GrPrimitiveProcessor& gp, | 325 const GrPrimitiveProcessor& gp, |
316 const GrBatchTracker& bt) override { | 326 const GrBatchTracker& bt) override { |
317 | 327 |
318 const BatchTracker& local = bt.cast<BatchTracker>(); | 328 const BatchTracker& local = bt.cast<BatchTracker>(); |
319 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f
Color) { | 329 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f
Color) { |
320 GrGLfloat c[4]; | 330 GrGLfloat c[4]; |
321 GrColorToRGBAFloat(local.fColor, c); | 331 GrColorToRGBAFloat(local.fColor, c); |
322 pdman.set4fv(fColorUniform, 1, c); | 332 pdman.set4fv(fColorUniform, 1, c); |
323 fColor = local.fColor; | 333 fColor = local.fColor; |
324 } | 334 } |
325 } | 335 } |
326 | 336 |
| 337 void setTransformData(const GrPrimitiveProcessor& primProc, |
| 338 const GrGLProgramDataManager& pdman, |
| 339 int index, |
| 340 const SkTArray<const GrCoordTransform*, true>& tra
nsforms) override { |
| 341 this->setTransformDataHelper<EllipseEdgeEffect>(primProc, pdman, ind
ex, transforms); |
| 342 } |
| 343 |
327 private: | 344 private: |
328 GrColor fColor; | 345 GrColor fColor; |
329 UniformHandle fColorUniform; | 346 UniformHandle fColorUniform; |
330 | 347 |
331 typedef GrGLGeometryProcessor INHERITED; | 348 typedef GrGLGeometryProcessor INHERITED; |
332 }; | 349 }; |
333 | 350 |
334 virtual void getGLProcessorKey(const GrBatchTracker& bt, | 351 virtual void getGLProcessorKey(const GrBatchTracker& bt, |
335 const GrGLSLCaps& caps, | 352 const GrGLSLCaps& caps, |
336 GrProcessorKeyBuilder* b) const override { | 353 GrProcessorKeyBuilder* b) const override { |
337 GLProcessor::GenKey(*this, bt, caps, b); | 354 GLProcessor::GenKey(*this, bt, caps, b); |
338 } | 355 } |
339 | 356 |
340 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, | 357 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, |
341 const GrGLSLCaps&) const ov
erride { | 358 const GrGLSLCaps&) const ov
erride { |
342 return SkNEW_ARGS(GLProcessor, (*this, bt)); | 359 return SkNEW_ARGS(GLProcessor, (*this, bt)); |
343 } | 360 } |
344 | 361 |
345 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const
override { | 362 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const
override { |
346 BatchTracker* local = bt->cast<BatchTracker>(); | 363 BatchTracker* local = bt->cast<BatchTracker>(); |
347 local->fInputColorType = GetColorInputType(&local->fColor, this->color()
, init, false); | 364 local->fInputColorType = GetColorInputType(&local->fColor, this->color()
, init, false); |
348 local->fUsesLocalCoords = init.fUsesLocalCoords; | 365 local->fUsesLocalCoords = init.fUsesLocalCoords; |
349 } | 366 } |
350 | 367 |
351 private: | 368 private: |
352 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) | 369 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) |
353 : INHERITED(localMatrix) | 370 : fColor(color) |
354 , fColor(color) { | 371 , fLocalMatrix(localMatrix) { |
355 this->initClassID<EllipseEdgeEffect>(); | 372 this->initClassID<EllipseEdgeEffect>(); |
356 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType)); | 373 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType)); |
357 fInEllipseOffset = &this->addVertexAttrib(Attribute("inEllipseOffset", | 374 fInEllipseOffset = &this->addVertexAttrib(Attribute("inEllipseOffset", |
358 kVec2f_GrVertexAtt
ribType)); | 375 kVec2f_GrVertexAtt
ribType)); |
359 fInEllipseRadii = &this->addVertexAttrib(Attribute("inEllipseRadii", | 376 fInEllipseRadii = &this->addVertexAttrib(Attribute("inEllipseRadii", |
360 kVec4f_GrVertexAttr
ibType)); | 377 kVec4f_GrVertexAttr
ibType)); |
361 fStroke = stroke; | 378 fStroke = stroke; |
362 } | 379 } |
363 | 380 |
364 struct BatchTracker { | 381 struct BatchTracker { |
365 GrGPInput fInputColorType; | 382 GrGPInput fInputColorType; |
366 GrColor fColor; | 383 GrColor fColor; |
367 bool fUsesLocalCoords; | 384 bool fUsesLocalCoords; |
368 }; | 385 }; |
369 | 386 |
370 const Attribute* fInPosition; | 387 const Attribute* fInPosition; |
371 const Attribute* fInEllipseOffset; | 388 const Attribute* fInEllipseOffset; |
372 const Attribute* fInEllipseRadii; | 389 const Attribute* fInEllipseRadii; |
373 GrColor fColor; | 390 GrColor fColor; |
| 391 SkMatrix fLocalMatrix; |
374 bool fStroke; | 392 bool fStroke; |
375 | 393 |
376 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; | 394 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; |
377 | 395 |
378 typedef GrGeometryProcessor INHERITED; | 396 typedef GrGeometryProcessor INHERITED; |
379 }; | 397 }; |
380 | 398 |
381 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(EllipseEdgeEffect); | 399 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(EllipseEdgeEffect); |
382 | 400 |
383 GrGeometryProcessor* EllipseEdgeEffect::TestCreate(SkRandom* random, | 401 GrGeometryProcessor* EllipseEdgeEffect::TestCreate(SkRandom* random, |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 | 465 |
448 // Setup pass through color | 466 // Setup pass through color |
449 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputC
olor, NULL, | 467 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputC
olor, NULL, |
450 &fColorUniform); | 468 &fColorUniform); |
451 | 469 |
452 // Setup position | 470 // Setup position |
453 this->setupPosition(pb, gpArgs, ee.inPosition()->fName, ee.viewMatri
x()); | 471 this->setupPosition(pb, gpArgs, ee.inPosition()->fName, ee.viewMatri
x()); |
454 | 472 |
455 // emit transforms | 473 // emit transforms |
456 this->emitTransforms(args.fPB, gpArgs->fPositionVar, ee.inPosition()
->fName, | 474 this->emitTransforms(args.fPB, gpArgs->fPositionVar, ee.inPosition()
->fName, |
457 ee.localMatrix(), args.fTransformsIn, args.fTra
nsformsOut); | 475 args.fTransformsIn, args.fTransformsOut); |
458 | 476 |
459 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(
); | 477 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(
); |
460 SkAssertResult(fsBuilder->enableFeature( | 478 SkAssertResult(fsBuilder->enableFeature( |
461 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature)
); | 479 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature)
); |
462 // for outer curve | 480 // for outer curve |
463 fsBuilder->codeAppendf("vec2 scaledOffset = %s.xy;", offsets0.fsIn()
); | 481 fsBuilder->codeAppendf("vec2 scaledOffset = %s.xy;", offsets0.fsIn()
); |
464 fsBuilder->codeAppend("float test = dot(scaledOffset, scaledOffset)
- 1.0;"); | 482 fsBuilder->codeAppend("float test = dot(scaledOffset, scaledOffset)
- 1.0;"); |
465 fsBuilder->codeAppendf("vec2 duvdx = dFdx(%s);", offsets0.fsIn()); | 483 fsBuilder->codeAppendf("vec2 duvdx = dFdx(%s);", offsets0.fsIn()); |
466 fsBuilder->codeAppendf("vec2 duvdy = dFdy(%s);", offsets0.fsIn()); | 484 fsBuilder->codeAppendf("vec2 duvdy = dFdy(%s);", offsets0.fsIn()); |
467 fsBuilder->codeAppendf("vec2 grad = vec2(2.0*%s.x*duvdx.x + 2.0*%s.y
*duvdx.y," | 485 fsBuilder->codeAppendf("vec2 grad = vec2(2.0*%s.x*duvdx.x + 2.0*%s.y
*duvdx.y," |
(...skipping 29 matching lines...) Expand all Loading... |
497 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage
); | 515 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage
); |
498 } | 516 } |
499 | 517 |
500 static void GenKey(const GrGeometryProcessor& gp, | 518 static void GenKey(const GrGeometryProcessor& gp, |
501 const GrBatchTracker& bt, | 519 const GrBatchTracker& bt, |
502 const GrGLSLCaps&, | 520 const GrGLSLCaps&, |
503 GrProcessorKeyBuilder* b) { | 521 GrProcessorKeyBuilder* b) { |
504 const BatchTracker& local = bt.cast<BatchTracker>(); | 522 const BatchTracker& local = bt.cast<BatchTracker>(); |
505 const DIEllipseEdgeEffect& ellipseEffect = gp.cast<DIEllipseEdgeEffe
ct>(); | 523 const DIEllipseEdgeEffect& ellipseEffect = gp.cast<DIEllipseEdgeEffe
ct>(); |
506 uint16_t key = ellipseEffect.getMode(); | 524 uint16_t key = ellipseEffect.getMode(); |
507 key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ?
0x1 << 8 : 0x0; | |
508 key |= ComputePosKey(ellipseEffect.viewMatrix()) << 9; | 525 key |= ComputePosKey(ellipseEffect.viewMatrix()) << 9; |
509 b->add32(key << 16 | local.fInputColorType); | 526 b->add32(key << 16 | local.fInputColorType); |
510 } | 527 } |
511 | 528 |
512 virtual void setData(const GrGLProgramDataManager& pdman, | 529 virtual void setData(const GrGLProgramDataManager& pdman, |
513 const GrPrimitiveProcessor& gp, | 530 const GrPrimitiveProcessor& gp, |
514 const GrBatchTracker& bt) override { | 531 const GrBatchTracker& bt) override { |
515 const DIEllipseEdgeEffect& dee = gp.cast<DIEllipseEdgeEffect>(); | 532 const DIEllipseEdgeEffect& dee = gp.cast<DIEllipseEdgeEffect>(); |
516 this->setUniformViewMatrix(pdman, dee.viewMatrix()); | 533 this->setUniformViewMatrix(pdman, dee.viewMatrix()); |
517 | 534 |
(...skipping 1547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2065 } | 2082 } |
2066 | 2083 |
2067 BATCH_TEST_DEFINE(RRectBatch) { | 2084 BATCH_TEST_DEFINE(RRectBatch) { |
2068 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random); | 2085 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random); |
2069 GrColor color = GrRandomColor(random); | 2086 GrColor color = GrRandomColor(random); |
2070 const SkRRect& rrect = GrTest::TestRRectSimple(random); | 2087 const SkRRect& rrect = GrTest::TestRRectSimple(random); |
2071 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra
ndom)); | 2088 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra
ndom)); |
2072 } | 2089 } |
2073 | 2090 |
2074 #endif | 2091 #endif |
OLD | NEW |