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

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

Issue 1765123002: Fix up GrAuditTrail to allow arbitrary reordering (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: Created 4 years, 9 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
« include/private/GrAuditTrail.h ('K') | « src/gpu/GrAuditTrail.cpp ('k') | no next file » | 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 /* 2 /*
3 * Copyright 2010 Google Inc. 3 * Copyright 2010 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "GrDrawTarget.h" 9 #include "GrDrawTarget.h"
10 10
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 } 442 }
443 443
444 void GrDrawTarget::recordBatch(GrBatch* batch) { 444 void GrDrawTarget::recordBatch(GrBatch* batch) {
445 // A closed drawTarget should never receive new/more batches 445 // A closed drawTarget should never receive new/more batches
446 SkASSERT(!this->isClosed()); 446 SkASSERT(!this->isClosed());
447 447
448 // Check if there is a Batch Draw we can batch with by linearly searching ba ck until we either 448 // Check if there is a Batch Draw we can batch with by linearly searching ba ck until we either
449 // 1) check every draw 449 // 1) check every draw
450 // 2) intersect with something 450 // 2) intersect with something
451 // 3) find a 'blocker' 451 // 3) find a 'blocker'
452 GR_AUDIT_TRAIL_ADDBATCH(fAuditTrail, batch->name(), batch->bounds()); 452 GR_AUDIT_TRAIL_ADDBATCH(fAuditTrail, batch);
453 GrBATCH_INFO("Re-Recording (%s, B%u)\n" 453 GrBATCH_INFO("Re-Recording (%s, B%u)\n"
454 "\tBounds LRTB (%f, %f, %f, %f)\n", 454 "\tBounds LRTB (%f, %f, %f, %f)\n",
455 batch->name(), 455 batch->name(),
456 batch->uniqueID(), 456 batch->uniqueID(),
457 batch->bounds().fLeft, batch->bounds().fRight, 457 batch->bounds().fLeft, batch->bounds().fRight,
458 batch->bounds().fTop, batch->bounds().fBottom); 458 batch->bounds().fTop, batch->bounds().fBottom);
459 GrBATCH_INFO(SkTabString(batch->dumpInfo(), 1).c_str()); 459 GrBATCH_INFO(SkTabString(batch->dumpInfo(), 1).c_str());
460 GrBATCH_INFO("\tOutcome:\n"); 460 GrBATCH_INFO("\tOutcome:\n");
461 int maxCandidates = SkTMin(fMaxBatchLookback, fBatches.count()); 461 int maxCandidates = SkTMin(fMaxBatchLookback, fBatches.count());
462 if (maxCandidates) { 462 if (maxCandidates) {
463 int i = 0; 463 int i = 0;
464 while (true) { 464 while (true) {
465 GrBatch* candidate = fBatches.fromBack(i); 465 GrBatch* candidate = fBatches.fromBack(i);
466 // We cannot continue to search backwards if the render target chang es 466 // We cannot continue to search backwards if the render target chang es
467 if (candidate->renderTargetUniqueID() != batch->renderTargetUniqueID ()) { 467 if (candidate->renderTargetUniqueID() != batch->renderTargetUniqueID ()) {
468 GrBATCH_INFO("\t\tBreaking because of (%s, B%u) Rendertarget\n", 468 GrBATCH_INFO("\t\tBreaking because of (%s, B%u) Rendertarget\n",
469 candidate->name(), candidate->uniqueID()); 469 candidate->name(), candidate->uniqueID());
470 break; 470 break;
471 } 471 }
472 if (candidate->combineIfPossible(batch, *this->caps())) { 472 if (candidate->combineIfPossible(batch, *this->caps())) {
473 GrBATCH_INFO("\t\tCombining with (%s, B%u)\n", candidate->name() , 473 GrBATCH_INFO("\t\tCombining with (%s, B%u)\n", candidate->name() ,
474 candidate->uniqueID()); 474 candidate->uniqueID());
475 GR_AUDIT_TRAIL_BATCHING_RESULT_COMBINED(fAuditTrail, candidate); 475 GR_AUDIT_TRAIL_BATCHING_RESULT_COMBINED(fAuditTrail, candidate, batch);
476 return; 476 return;
477 } 477 }
478 // Stop going backwards if we would cause a painter's order violatio n. 478 // Stop going backwards if we would cause a painter's order violatio n.
479 // TODO: The bounds used here do not fully consider the clip. It may be advantageous 479 // TODO: The bounds used here do not fully consider the clip. It may be advantageous
480 // to clip each batch's bounds to the clip. 480 // to clip each batch's bounds to the clip.
481 if (intersect(candidate->bounds(), batch->bounds())) { 481 if (intersect(candidate->bounds(), batch->bounds())) {
482 GrBATCH_INFO("\t\tIntersects with (%s, B%u)\n", candidate->name( ), 482 GrBATCH_INFO("\t\tIntersects with (%s, B%u)\n", candidate->name( ),
483 candidate->uniqueID()); 483 candidate->uniqueID());
484 break; 484 break;
485 } 485 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 } 546 }
547 547
548 return true; 548 return true;
549 } 549 }
550 550
551 void GrDrawTarget::clearStencilClip(const SkIRect& rect, bool insideClip, GrRend erTarget* rt) { 551 void GrDrawTarget::clearStencilClip(const SkIRect& rect, bool insideClip, GrRend erTarget* rt) {
552 GrBatch* batch = new GrClearStencilClipBatch(rect, insideClip, rt); 552 GrBatch* batch = new GrClearStencilClipBatch(rect, insideClip, rt);
553 this->recordBatch(batch); 553 this->recordBatch(batch);
554 batch->unref(); 554 batch->unref();
555 } 555 }
OLDNEW
« include/private/GrAuditTrail.h ('K') | « src/gpu/GrAuditTrail.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698