diff options
author | Ravi Mistry <rmistry@google.com> | 2016-12-21 22:32:21 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-12-21 22:32:37 +0000 |
commit | 9bcda719e87140dcb541356fdb3f589e145c9b8e (patch) | |
tree | d02f2307e1539720ea4cd8ac3e21e8b8aa0e240d /tools | |
parent | 49e59b2df4065d856e4e03d433f2facd2a5548ca (diff) |
Revert "Fix issue in SkDebugCanvas where filter canvas prevents GrOp bounds from drawing"
This reverts commit 4bf98e7e802edf43effec93bea22fecb031f65f1.
Reason for revert: Seems to have caused some compile bots to break-
https://chromium-swarm.appspot.com/task?id=333c47cadb764f10&refresh=10
Original change's description:
> Fix issue in SkDebugCanvas where filter canvas prevents GrOp bounds from drawing
>
> Change-Id: I3446bfc42c4cf521916a03aa0f367cd38b4fd370
> Reviewed-on: https://skia-review.googlesource.com/6401
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
>
TBR=bsalomon@google.com,bungeman@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I0a73fe8c13967233dec950c317693d13d738722a
Reviewed-on: https://skia-review.googlesource.com/6408
Commit-Queue: Ravi Mistry <rmistry@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/debugger/SkDebugCanvas.cpp | 79 |
1 files changed, 38 insertions, 41 deletions
diff --git a/tools/debugger/SkDebugCanvas.cpp b/tools/debugger/SkDebugCanvas.cpp index 0a28bdcd0c..3e401cb244 100644 --- a/tools/debugger/SkDebugCanvas.cpp +++ b/tools/debugger/SkDebugCanvas.cpp @@ -206,26 +206,27 @@ void SkDebugCanvas::markActiveCommands(int index) { } -void SkDebugCanvas::drawTo(SkCanvas* originalCanvas, int index, int m) { +void SkDebugCanvas::drawTo(SkCanvas* canvas, int index, int m) { SkASSERT(!fCommandVector.isEmpty()); SkASSERT(index < fCommandVector.count()); - int saveCount = originalCanvas->save(); + int saveCount = canvas->save(); - SkRect windowRect = SkRect::MakeWH(SkIntToScalar(originalCanvas->getBaseLayerSize().width()), - SkIntToScalar(originalCanvas->getBaseLayerSize().height())); + SkRect windowRect = SkRect::MakeWH(SkIntToScalar(canvas->getBaseLayerSize().width()), + SkIntToScalar(canvas->getBaseLayerSize().height())); bool pathOpsMode = getAllowSimplifyClip(); - originalCanvas->setAllowSimplifyClip(pathOpsMode); - originalCanvas->clear(SK_ColorWHITE); - originalCanvas->resetMatrix(); + canvas->setAllowSimplifyClip(pathOpsMode); + canvas->clear(SK_ColorWHITE); + canvas->resetMatrix(); if (!windowRect.isEmpty()) { - originalCanvas->clipRect(windowRect, kReplace_SkClipOp); + canvas->clipRect(windowRect, kReplace_SkClipOp); } - this->applyUserTransform(originalCanvas); + this->applyUserTransform(canvas); - DebugPaintFilterCanvas filterCanvas(originalCanvas, fOverdrawViz, fOverrideFilterQuality, - fFilterQuality); + DebugPaintFilterCanvas fPaintFilterCanvas(canvas, fOverdrawViz, + fOverrideFilterQuality, fFilterQuality); + canvas = &fPaintFilterCanvas; if (fMegaVizMode) { this->markActiveCommands(index); @@ -235,21 +236,20 @@ void SkDebugCanvas::drawTo(SkCanvas* originalCanvas, int index, int m) { // If we have a GPU backend we can also visualize the op information GrAuditTrail* at = nullptr; if (fDrawGpuOpBounds || m != -1) { - // The audit trail must be obtained from the original canvas. - at = this->getAuditTrail(originalCanvas); + at = this->getAuditTrail(canvas); } #endif for (int i = 0; i <= index; i++) { if (i == index && fFilter) { - filterCanvas.clear(0xAAFFFFFF); + canvas->clear(0xAAFFFFFF); } #if SK_SUPPORT_GPU // We need to flush any pending operations, or they might combine with commands below. // Previous operations were not registered with the audit trail when they were // created, so if we allow them to combine, the audit trail will fail to find them. - filterCanvas.flush(); + canvas->flush(); GrAuditTrail::AutoCollectOps* acb = nullptr; if (at) { @@ -263,10 +263,10 @@ void SkDebugCanvas::drawTo(SkCanvas* originalCanvas, int index, int m) { // All active saveLayers get replaced with saves so all draws go to the // visible canvas. // All active culls draw their cull box - fCommandVector[i]->vizExecute(&filterCanvas); + fCommandVector[i]->vizExecute(canvas); } else { fCommandVector[i]->setUserMatrix(fUserMatrix); - fCommandVector[i]->execute(&filterCanvas); + fCommandVector[i]->execute(canvas); } } #if SK_SUPPORT_GPU @@ -277,37 +277,36 @@ void SkDebugCanvas::drawTo(SkCanvas* originalCanvas, int index, int m) { } if (SkColorGetA(fClipVizColor) != 0) { - filterCanvas.save(); + canvas->save(); #define LARGE_COORD 1000000000 - filterCanvas.clipRect( - SkRect::MakeLTRB(-LARGE_COORD, -LARGE_COORD, LARGE_COORD, LARGE_COORD), - kReverseDifference_SkClipOp); + canvas->clipRect(SkRect::MakeLTRB(-LARGE_COORD, -LARGE_COORD, LARGE_COORD, LARGE_COORD), + kReverseDifference_SkClipOp); SkPaint clipPaint; clipPaint.setColor(fClipVizColor); - filterCanvas.drawPaint(clipPaint); - filterCanvas.restore(); + canvas->drawPaint(clipPaint); + canvas->restore(); } if (fMegaVizMode) { - filterCanvas.save(); + canvas->save(); // nuke the CTM - filterCanvas.resetMatrix(); + canvas->resetMatrix(); // turn off clipping if (!windowRect.isEmpty()) { SkRect r = windowRect; r.outset(SK_Scalar1, SK_Scalar1); - filterCanvas.clipRect(r, kReplace_SkClipOp); + canvas->clipRect(r, kReplace_SkClipOp); } // visualize existing clips - SkDebugClipVisitor visitor(&filterCanvas); + SkDebugClipVisitor visitor(canvas); - filterCanvas.replayClips(&visitor); + canvas->replayClips(&visitor); - filterCanvas.restore(); + canvas->restore(); } if (pathOpsMode) { this->resetClipStackData(); - const SkClipStack* clipStack = filterCanvas.getClipStack(); + const SkClipStack* clipStack = canvas->getClipStack(); SkClipStack::Iter iter(*clipStack, SkClipStack::Iter::kBottom_IterStart); const SkClipStack::Element* element; SkPath devPath; @@ -327,12 +326,12 @@ void SkDebugCanvas::drawTo(SkCanvas* originalCanvas, int index, int m) { } this->lastClipStackData(devPath); } - fMatrix = filterCanvas.getTotalMatrix(); - if (!filterCanvas.getClipDeviceBounds(&fClip)) { + fMatrix = canvas->getTotalMatrix(); + if (!canvas->getClipDeviceBounds(&fClip)) { fClip.setEmpty(); } - filterCanvas.restoreToCount(saveCount); + canvas->restoreToCount(saveCount); #if SK_SUPPORT_GPU // draw any ops if required and issue a full reset onto GrAuditTrail @@ -340,17 +339,15 @@ void SkDebugCanvas::drawTo(SkCanvas* originalCanvas, int index, int m) { // just in case there is global reordering, we flush the canvas before querying // GrAuditTrail GrAuditTrail::AutoEnable ae(at); - filterCanvas.flush(); + canvas->flush(); // we pick three colorblind-safe colors, 75% alpha static const SkColor kTotalBounds = SkColorSetARGB(0xC0, 0x6A, 0x3D, 0x9A); static const SkColor kCommandOpBounds = SkColorSetARGB(0xC0, 0xE3, 0x1A, 0x1C); static const SkColor kOtherOpBounds = SkColorSetARGB(0xC0, 0xFF, 0x7F, 0x00); - // get the render target of the top device (from the original canvas) so we can ignore ops - // drawn offscreen - GrRenderTargetContext* rtc = - originalCanvas->internal_private_accessTopLayerRenderTargetContext(); + // get the render target of the top device so we can ignore ops drawn offscreen + GrRenderTargetContext* rtc = canvas->internal_private_accessTopLayerRenderTargetContext(); GrGpuResource::UniqueID rtID = rtc->accessRenderTarget()->uniqueID(); // get the bounding boxes to draw @@ -370,7 +367,7 @@ void SkDebugCanvas::drawTo(SkCanvas* originalCanvas, int index, int m) { continue; } paint.setColor(kTotalBounds); - filterCanvas.drawRect(childrenBounds[i].fBounds, paint); + canvas->drawRect(childrenBounds[i].fBounds, paint); for (int j = 0; j < childrenBounds[i].fOps.count(); j++) { const GrAuditTrail::OpInfo::Op& op = childrenBounds[i].fOps[j]; if (op.fClientID != index) { @@ -378,12 +375,12 @@ void SkDebugCanvas::drawTo(SkCanvas* originalCanvas, int index, int m) { } else { paint.setColor(kCommandOpBounds); } - filterCanvas.drawRect(op.fBounds, paint); + canvas->drawRect(op.fBounds, paint); } } } #endif - this->cleanupAuditTrail(originalCanvas); + this->cleanupAuditTrail(canvas); } void SkDebugCanvas::deleteDrawCommandAt(int index) { |