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

Side by Side Diff: src/gpu/batches/GrAAFillRectBatch.cpp

Issue 2115673002: Remove unneeded helpers in AA and non-AA rect GrBatch subclasses (Closed) Base URL: https://chromium.googlesource.com/skia.git@rectgeoms2
Patch Set: Add back \n to debug print Created 4 years, 5 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 | « no previous file | src/gpu/batches/GrNonAAFillRectBatch.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 2015 Google Inc. 2 * Copyright 2015 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 "GrAAFillRectBatch.h" 8 #include "GrAAFillRectBatch.h"
9 9
10 #include "GrBatchFlushState.h" 10 #include "GrBatchFlushState.h"
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 193
194 struct Geometry { 194 struct Geometry {
195 SkMatrix fViewMatrix; 195 SkMatrix fViewMatrix;
196 SkRect fRect; 196 SkRect fRect;
197 SkRect fDevRect; 197 SkRect fDevRect;
198 GrColor fColor; 198 GrColor fColor;
199 }; 199 };
200 200
201 static AAFillRectNoLocalMatrixBatch* Create() { return new AAFillRectNoLocal MatrixBatch; } 201 static AAFillRectNoLocalMatrixBatch* Create() { return new AAFillRectNoLocal MatrixBatch; }
202 202
203 const char* name() const override { return Name(); } 203 const char* name() const override { return "AAFillRectBatchNoLocalMatrix"; }
204 204
205 SkString dumpInfo() const override { 205 SkString dumpInfo() const override {
206 SkString str; 206 SkString str;
207 str.appendf("# batched: %d\n", fGeoData.count()); 207 str.appendf("# batched: %d\n", fGeoData.count());
208 for (int i = 0; i < fGeoData.count(); ++i) { 208 for (int i = 0; i < fGeoData.count(); ++i) {
209 str.append(DumpInfo(fGeoData[i], i)); 209 const Geometry& geo = fGeoData[i];
210 str.appendf("%d: Color: 0x%08x, Rect [L: %.2f, T: %.2f, R: %.2f, B: %.2f]\n",
211 i, geo.fColor,
212 geo.fRect.fLeft, geo.fRect.fTop, geo.fRect.fRight, geo.f Rect.fBottom);
210 } 213 }
211 str.append(INHERITED::dumpInfo()); 214 str.append(INHERITED::dumpInfo());
212 return str; 215 return str;
213 } 216 }
214 217
215 void computePipelineOptimizations(GrInitInvariantOutput* color, 218 void computePipelineOptimizations(GrInitInvariantOutput* color,
216 GrInitInvariantOutput* coverage, 219 GrInitInvariantOutput* coverage,
217 GrBatchToXPOverrides* overrides) const ove rride { 220 GrBatchToXPOverrides* overrides) const ove rride {
218 // When this is called on a batch, there is only one geometry bundle 221 // When this is called on a batch, there is only one geometry bundle
219 color->setKnownFourComponents(fGeoData[0].fColor); 222 color->setKnownFourComponents(fGeoData[0].fColor);
220 InitInvariantOutputCoverage(coverage); 223 coverage->setUnknownSingleComponent();
221 } 224 }
222 225
223 void initBatchTracker(const GrXPOverridesForBatch& overrides) override { 226 void initBatchTracker(const GrXPOverridesForBatch& overrides) override {
224 overrides.getOverrideColorIfSet(&fGeoData[0].fColor); 227 overrides.getOverrideColorIfSet(&fGeoData[0].fColor);
225 fOverrides = overrides; 228 fOverrides = overrides;
226 } 229 }
227 230
228 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 231 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
229 232
230 // After seeding, the client should call init() so the Batch can initialize itself 233 // After seeding, the client should call init() so the Batch can initialize itself
231 void init() { 234 void init() { fBounds = fGeoData[0].fDevRect; }
232 const Geometry& geo = fGeoData[0];
233 SetBounds(geo, &fBounds);
234 }
235
236 void updateBoundsAfterAppend() {
237 const Geometry& geo = fGeoData.back();
238 UpdateBoundsAfterAppend(geo, &fBounds);
239 }
240 235
241 private: 236 private:
242 static const int kVertsPerInstance = kVertsPerAAFillRect;
243 static const int kIndicesPerInstance = kIndicesPerAAFillRect;
244
245 static void InitInvariantOutputCoverage(GrInitInvariantOutput* out) {
246 out->setUnknownSingleComponent();
247 }
248
249 static const GrBuffer* GetIndexBuffer(GrResourceProvider* rp) {
250 return get_index_buffer(rp);
251 }
252
253 static void SetBounds(const Geometry& geo, SkRect* outBounds) {
254 *outBounds = geo.fDevRect;
255 }
256
257 static void UpdateBoundsAfterAppend(const Geometry& geo, SkRect* outBounds) {
258 outBounds->join(geo.fDevRect);
259 }
260
261 static const char* Name() { return "AAFillRectBatchNoLocalMatrix"; }
262
263 static SkString DumpInfo(const Geometry& geo, int index) {
264 SkString str;
265 str.appendf("%d: Color: 0x%08x, Rect [L: %.2f, T: %.2f, R: %.2f, B: %.2f ]\n",
266 index,
267 geo.fColor,
268 geo.fRect.fLeft, geo.fRect.fTop, geo.fRect.fRight, geo.fRect .fBottom);
269 return str;
270 }
271
272 static bool CanCombine(const Geometry& mine, const Geometry& theirs,
273 const GrXPOverridesForBatch& overrides) {
274 // We apply the viewmatrix to the rect points on the cpu. However, if t he pipeline uses
275 // local coords then we won't be able to batch. We could actually uploa d the viewmatrix
276 // using vertex attributes in these cases, but haven't investigated that
277 return !overrides.readsLocalCoords() || mine.fViewMatrix.cheapEqualTo(th eirs.fViewMatrix);
278 }
279
280 static sk_sp<GrGeometryProcessor> MakeGP(const Geometry& geo,
281 const GrXPOverridesForBatch& overri des) {
282 sk_sp<GrGeometryProcessor> gp =
283 create_fill_rect_gp(geo.fViewMatrix, overrides,
284 GrDefaultGeoProcFactory::LocalCoords::kUsePo sition_Type);
285
286 SkASSERT(overrides.canTweakAlphaForCoverage() ?
287 gp->getVertexStride() == sizeof(GrDefaultGeoProcFactory::Positi onColorAttr) :
288 gp->getVertexStride() ==
289 sizeof(GrDefaultGeoProcFactory::PositionColorCoverageAt tr));
290 return gp;
291 }
292
293 static void Tesselate(intptr_t vertices, size_t vertexStride, const Geometry & geo,
294 const GrXPOverridesForBatch& overrides) {
295 generate_aa_fill_rect_geometry(vertices, vertexStride,
296 geo.fColor, geo.fViewMatrix, geo.fRect, g eo.fDevRect,
297 overrides, nullptr);
298 }
299
300 AAFillRectNoLocalMatrixBatch() : INHERITED(ClassID()) {} 237 AAFillRectNoLocalMatrixBatch() : INHERITED(ClassID()) {}
301 238
302 void onPrepareDraws(Target* target) const override { 239 void onPrepareDraws(Target* target) const override {
303 sk_sp<GrGeometryProcessor> gp(MakeGP(this->seedGeometry(), fOverrides)); 240 sk_sp<GrGeometryProcessor> gp =
241 create_fill_rect_gp(fGeoData[0].fViewMatrix, fOverrides,
242 GrDefaultGeoProcFactory::LocalCoords::kUsePo sition_Type);
304 if (!gp) { 243 if (!gp) {
305 SkDebugf("Couldn't create GrGeometryProcessor\n"); 244 SkDebugf("Couldn't create GrGeometryProcessor\n");
306 return; 245 return;
307 } 246 }
247 SkASSERT(fOverrides.canTweakAlphaForCoverage() ?
248 gp->getVertexStride() == sizeof(GrDefaultGeoProcFactory::Po sitionColorAttr) :
249 gp->getVertexStride() ==
250 sizeof(GrDefaultGeoProcFactory::PositionColorCoverageAt tr));
308 251
309 size_t vertexStride = gp->getVertexStride(); 252 size_t vertexStride = gp->getVertexStride();
310 int instanceCount = fGeoData.count(); 253 int instanceCount = fGeoData.count();
311 254
312 SkAutoTUnref<const GrBuffer> indexBuffer(GetIndexBuffer(target->resource Provider())); 255 SkAutoTUnref<const GrBuffer> indexBuffer(get_index_buffer(target->resour ceProvider()));
313 InstancedHelper helper; 256 InstancedHelper helper;
314 void* vertices = helper.init(target, kTriangles_GrPrimitiveType, vertexS tride, 257 void* vertices = helper.init(target, kTriangles_GrPrimitiveType, vertexS tride,
315 indexBuffer, kVertsPerInstance, 258 indexBuffer, kVertsPerAAFillRect,
316 kIndicesPerInstance, instanceCount); 259 kIndicesPerAAFillRect, instanceCount);
317 if (!vertices || !indexBuffer) { 260 if (!vertices || !indexBuffer) {
318 SkDebugf("Could not allocate vertices\n"); 261 SkDebugf("Could not allocate vertices\n");
319 return; 262 return;
320 } 263 }
321 264
322 for (int i = 0; i < instanceCount; i++) { 265 for (int i = 0; i < instanceCount; i++) {
323 intptr_t verts = reinterpret_cast<intptr_t>(vertices) + 266 intptr_t verts = reinterpret_cast<intptr_t>(vertices) +
324 i * kVertsPerInstance * vertexStride; 267 i * kVertsPerAAFillRect * vertexStride;
325 Tesselate(verts, vertexStride, fGeoData[i], fOverrides); 268 generate_aa_fill_rect_geometry(verts, vertexStride,
269 fGeoData[i].fColor, fGeoData[i].fView Matrix,
270 fGeoData[i].fRect, fGeoData[i].fDevRe ct, fOverrides,
271 nullptr);
326 } 272 }
327 helper.recordDraw(target, gp.get()); 273 helper.recordDraw(target, gp.get());
328 } 274 }
329 275
330 const Geometry& seedGeometry() const { return fGeoData[0]; }
331
332 bool onCombineIfPossible(GrBatch* t, const GrCaps& caps) override { 276 bool onCombineIfPossible(GrBatch* t, const GrCaps& caps) override {
333 AAFillRectNoLocalMatrixBatch* that = t->cast<AAFillRectNoLocalMatrixBatc h>(); 277 AAFillRectNoLocalMatrixBatch* that = t->cast<AAFillRectNoLocalMatrixBatc h>();
334 if (!GrPipeline::CanCombine(*this->pipeline(), this->bounds(), *that->pi peline(), 278 if (!GrPipeline::CanCombine(*this->pipeline(), this->bounds(), *that->pi peline(),
335 that->bounds(), caps)) { 279 that->bounds(), caps)) {
336 return false; 280 return false;
337 } 281 }
338 282
339 if (!CanCombine(this->seedGeometry(), that->seedGeometry(), fOverrides)) { 283 // We apply the viewmatrix to the rect points on the cpu. However, if t he pipeline uses
284 // local coords then we won't be able to batch. We could actually uploa d the viewmatrix
285 // using vertex attributes in these cases, but haven't investigated that
286 if (fOverrides.readsLocalCoords() &&
287 !fGeoData[0].fViewMatrix.cheapEqualTo(that->fGeoData[0].fViewMatrix) ) {
340 return false; 288 return false;
341 } 289 }
342 290
343 // In the event of two batches, one who can tweak, one who cannot, we ju st fall back to 291 // In the event of two batches, one who can tweak, one who cannot, we ju st fall back to
344 // not tweaking 292 // not tweaking
345 if (fOverrides.canTweakAlphaForCoverage() && !that->fOverrides.canTweakA lphaForCoverage()) { 293 if (fOverrides.canTweakAlphaForCoverage() && !that->fOverrides.canTweakA lphaForCoverage()) {
346 fOverrides = that->fOverrides; 294 fOverrides = that->fOverrides;
347 } 295 }
348 296
349 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 297 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
(...skipping 14 matching lines...) Expand all
364 struct Geometry { 312 struct Geometry {
365 SkMatrix fViewMatrix; 313 SkMatrix fViewMatrix;
366 SkMatrix fLocalMatrix; 314 SkMatrix fLocalMatrix;
367 SkRect fRect; 315 SkRect fRect;
368 SkRect fDevRect; 316 SkRect fDevRect;
369 GrColor fColor; 317 GrColor fColor;
370 }; 318 };
371 319
372 static AAFillRectLocalMatrixBatch* Create() { return new AAFillRectLocalMatr ixBatch; } 320 static AAFillRectLocalMatrixBatch* Create() { return new AAFillRectLocalMatr ixBatch; }
373 321
374 const char* name() const override { return Name(); } 322 const char* name() const override { return "AAFillRectBatchLocalMatrix"; }
375 323
376 SkString dumpInfo() const override { 324 SkString dumpInfo() const override {
377 SkString str; 325 SkString str;
378 str.appendf("# batched: %d\n", fGeoData.count()); 326 str.appendf("# batched: %d\n", fGeoData.count());
379 for (int i = 0; i < fGeoData.count(); ++i) { 327 for (int i = 0; i < fGeoData.count(); ++i) {
380 str.append(DumpInfo(fGeoData[i], i)); 328 const Geometry& geo = fGeoData[i];
329 str.appendf("%d: Color: 0x%08x, Rect [L: %.2f, T: %.2f, R: %.2f, B: %.2f]\n",
330 i, geo.fColor,
331 geo.fRect.fLeft, geo.fRect.fTop, geo.fRect.fRight, geo.f Rect.fBottom);
381 } 332 }
382 str.append(INHERITED::dumpInfo()); 333 str.append(INHERITED::dumpInfo());
383 return str; 334 return str;
384 } 335 }
385 336
386 void computePipelineOptimizations(GrInitInvariantOutput* color, 337 void computePipelineOptimizations(GrInitInvariantOutput* color,
387 GrInitInvariantOutput* coverage, 338 GrInitInvariantOutput* coverage,
388 GrBatchToXPOverrides* overrides) const ove rride { 339 GrBatchToXPOverrides* overrides) const ove rride {
389 // When this is called on a batch, there is only one geometry bundle 340 // When this is called on a batch, there is only one geometry bundle
390 color->setKnownFourComponents(fGeoData[0].fColor); 341 color->setKnownFourComponents(fGeoData[0].fColor);
391 InitInvariantOutputCoverage(coverage); 342 coverage->setUnknownSingleComponent();
392 } 343 }
393 344
394 void initBatchTracker(const GrXPOverridesForBatch& overrides) override { 345 void initBatchTracker(const GrXPOverridesForBatch& overrides) override {
395 overrides.getOverrideColorIfSet(&fGeoData[0].fColor); 346 overrides.getOverrideColorIfSet(&fGeoData[0].fColor);
396 fOverrides = overrides; 347 fOverrides = overrides;
397 } 348 }
398 349
399 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 350 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
400 351
401 // After seeding, the client should call init() so the Batch can initialize itself 352 // After seeding, the client should call init() so the Batch can initialize itself
402 void init() { 353 void init() { fBounds = fGeoData[0].fDevRect; }
403 const Geometry& geo = fGeoData[0];
404 SetBounds(geo, &fBounds);
405 }
406
407 void updateBoundsAfterAppend() {
408 const Geometry& geo = fGeoData.back();
409 UpdateBoundsAfterAppend(geo, &fBounds);
410 }
411 354
412 private: 355 private:
413 static const int kVertsPerInstance = kVertsPerAAFillRect;
414 static const int kIndicesPerInstance = kIndicesPerAAFillRect;
415
416 static void InitInvariantOutputCoverage(GrInitInvariantOutput* out) {
417 out->setUnknownSingleComponent();
418 }
419
420 static const GrBuffer* GetIndexBuffer(GrResourceProvider* rp) {
421 return get_index_buffer(rp);
422 }
423
424 static void SetBounds(const Geometry& geo, SkRect* outBounds) {
425 *outBounds = geo.fDevRect;
426 }
427
428 static void UpdateBoundsAfterAppend(const Geometry& geo, SkRect* outBounds) {
429 outBounds->join(geo.fDevRect);
430 }
431
432 static const char* Name() { return "AAFillRectBatchLocalMatrix"; }
433
434 static SkString DumpInfo(const Geometry& geo, int index) {
435 SkString str;
436 str.appendf("%d: Color: 0x%08x, Rect [L: %.2f, T: %.2f, R: %.2f, B: %.2f ]\n",
437 index,
438 geo.fColor,
439 geo.fRect.fLeft, geo.fRect.fTop, geo.fRect.fRight, geo.fRect .fBottom);
440 return str;
441 }
442
443 static bool CanCombine(const Geometry& mine, const Geometry& theirs,
444 const GrXPOverridesForBatch& overrides) {
445 return true;
446 }
447
448 static sk_sp<GrGeometryProcessor> MakeGP(const Geometry& geo,
449 const GrXPOverridesForBatch& over rides) {
450 sk_sp<GrGeometryProcessor> gp =
451 create_fill_rect_gp(geo.fViewMatrix, overrides,
452 GrDefaultGeoProcFactory::LocalCoords::kHasEx plicit_Type);
453
454 SkASSERT(overrides.canTweakAlphaForCoverage() ?
455 gp->getVertexStride() ==
456 sizeof(GrDefaultGeoProcFactory::PositionColorLocalCoord Attr) :
457 gp->getVertexStride() ==
458 sizeof(GrDefaultGeoProcFactory::PositionColorLocalCoord Coverage));
459 return gp;
460 }
461
462 static void Tesselate(intptr_t vertices, size_t vertexStride, const Geometry & geo,
463 const GrXPOverridesForBatch& overrides) {
464 generate_aa_fill_rect_geometry(vertices, vertexStride,
465 geo.fColor, geo.fViewMatrix, geo.fRect, g eo.fDevRect,
466 overrides, &geo.fLocalMatrix);
467 }
468
469 AAFillRectLocalMatrixBatch() : INHERITED(ClassID()) {} 356 AAFillRectLocalMatrixBatch() : INHERITED(ClassID()) {}
470 357
471 void onPrepareDraws(Target* target) const override { 358 void onPrepareDraws(Target* target) const override {
472 sk_sp<GrGeometryProcessor> gp(MakeGP(this->seedGeometry(), fOverrides)); 359 sk_sp<GrGeometryProcessor> gp =
360 create_fill_rect_gp(fGeoData[0].fViewMatrix, fOverrides,
361 GrDefaultGeoProcFactory::LocalCoords::kHasEx plicit_Type);
473 if (!gp) { 362 if (!gp) {
474 SkDebugf("Couldn't create GrGeometryProcessor\n"); 363 SkDebugf("Couldn't create GrGeometryProcessor\n");
475 return; 364 return;
476 } 365 }
366 SkASSERT(fOverrides.canTweakAlphaForCoverage() ?
367 gp->getVertexStride() ==
368 sizeof(GrDefaultGeoProcFactory::PositionColorLocalCoordAttr) :
369 gp->getVertexStride() ==
370 sizeof(GrDefaultGeoProcFactory::PositionColorLocalCoordCoverage ));
477 371
478 size_t vertexStride = gp->getVertexStride(); 372 size_t vertexStride = gp->getVertexStride();
479 int instanceCount = fGeoData.count(); 373 int instanceCount = fGeoData.count();
480 374
481 SkAutoTUnref<const GrBuffer> indexBuffer(GetIndexBuffer(target->resource Provider())); 375 SkAutoTUnref<const GrBuffer> indexBuffer(get_index_buffer(target->resour ceProvider()));
482 InstancedHelper helper; 376 InstancedHelper helper;
483 void* vertices = helper.init(target, kTriangles_GrPrimitiveType, vertexS tride, 377 void* vertices = helper.init(target, kTriangles_GrPrimitiveType, vertexS tride,
484 indexBuffer, kVertsPerInstance, 378 indexBuffer, kVertsPerAAFillRect,
485 kIndicesPerInstance, instanceCount); 379 kIndicesPerAAFillRect, instanceCount);
486 if (!vertices || !indexBuffer) { 380 if (!vertices || !indexBuffer) {
487 SkDebugf("Could not allocate vertices\n"); 381 SkDebugf("Could not allocate vertices\n");
488 return; 382 return;
489 } 383 }
490 384
491 for (int i = 0; i < instanceCount; i++) { 385 for (int i = 0; i < instanceCount; i++) {
492 intptr_t verts = reinterpret_cast<intptr_t>(vertices) + 386 intptr_t verts = reinterpret_cast<intptr_t>(vertices) +
493 i * kVertsPerInstance * vertexStride; 387 i * kVertsPerAAFillRect * vertexStride;
494 Tesselate(verts, vertexStride, fGeoData[i], fOverrides); 388 generate_aa_fill_rect_geometry(verts, vertexStride, fGeoData[i].fCol or,
389 fGeoData[i].fViewMatrix, fGeoData[i]. fRect,
390 fGeoData[i].fDevRect, fOverrides,
391 &fGeoData[i].fLocalMatrix);
495 } 392 }
496 helper.recordDraw(target, gp.get()); 393 helper.recordDraw(target, gp.get());
497 } 394 }
498 395
499 const Geometry& seedGeometry() const { return fGeoData[0]; }
500
501 bool onCombineIfPossible(GrBatch* t, const GrCaps& caps) override { 396 bool onCombineIfPossible(GrBatch* t, const GrCaps& caps) override {
502 AAFillRectLocalMatrixBatch* that = t->cast<AAFillRectLocalMatrixBatch>() ; 397 AAFillRectLocalMatrixBatch* that = t->cast<AAFillRectLocalMatrixBatch>() ;
503 if (!GrPipeline::CanCombine(*this->pipeline(), this->bounds(), *that->pi peline(), 398 if (!GrPipeline::CanCombine(*this->pipeline(), this->bounds(), *that->pi peline(),
504 that->bounds(), caps)) { 399 that->bounds(), caps)) {
505 return false; 400 return false;
506 } 401 }
507 402
508 if (!CanCombine(this->seedGeometry(), that->seedGeometry(), fOverrides)) {
509 return false;
510 }
511
512 // In the event of two batches, one who can tweak, one who cannot, we ju st fall back to 403 // In the event of two batches, one who can tweak, one who cannot, we ju st fall back to
513 // not tweaking 404 // not tweaking
514 if (fOverrides.canTweakAlphaForCoverage() && !that->fOverrides.canTweakA lphaForCoverage()) { 405 if (fOverrides.canTweakAlphaForCoverage() && !that->fOverrides.canTweakA lphaForCoverage()) {
515 fOverrides = that->fOverrides; 406 fOverrides = that->fOverrides;
516 } 407 }
517 408
518 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 409 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
519 this->joinBounds(that->bounds()); 410 this->joinBounds(that->bounds());
520 return true; 411 return true;
521 } 412 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 DRAW_BATCH_TEST_DEFINE(AAFillRectBatchLocalMatrix) { 490 DRAW_BATCH_TEST_DEFINE(AAFillRectBatchLocalMatrix) {
600 GrColor color = GrRandomColor(random); 491 GrColor color = GrRandomColor(random);
601 SkMatrix viewMatrix = GrTest::TestMatrixInvertible(random); 492 SkMatrix viewMatrix = GrTest::TestMatrixInvertible(random);
602 SkMatrix localMatrix = GrTest::TestMatrix(random); 493 SkMatrix localMatrix = GrTest::TestMatrix(random);
603 SkRect rect = GrTest::TestRect(random); 494 SkRect rect = GrTest::TestRect(random);
604 SkRect devRect = GrTest::TestRect(random); 495 SkRect devRect = GrTest::TestRect(random);
605 return GrAAFillRectBatch::Create(color, viewMatrix, localMatrix, rect, devRe ct); 496 return GrAAFillRectBatch::Create(color, viewMatrix, localMatrix, rect, devRe ct);
606 } 497 }
607 498
608 #endif 499 #endif
OLDNEW
« no previous file with comments | « no previous file | src/gpu/batches/GrNonAAFillRectBatch.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698