diff options
author | joshualitt <joshualitt@chromium.org> | 2016-02-29 11:15:06 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-29 11:15:06 -0800 |
commit | 10d8fc29bc1605c134e98f5b58c2efb73cef6073 (patch) | |
tree | 702f20b251cfa0dfb6c858269ed148ec9e0ee62c /src/gpu/GrAuditTrail.cpp | |
parent | 790d5132620d86813380d3df251e80dd2b41a409 (diff) |
Render batch bounds as stroke rects
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1745063002
Review URL: https://codereview.chromium.org/1745063002
Diffstat (limited to 'src/gpu/GrAuditTrail.cpp')
-rw-r--r-- | src/gpu/GrAuditTrail.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/gpu/GrAuditTrail.cpp b/src/gpu/GrAuditTrail.cpp index 4b90ea524f..f17ada4881 100644 --- a/src/gpu/GrAuditTrail.cpp +++ b/src/gpu/GrAuditTrail.cpp @@ -40,6 +40,40 @@ void GrAuditTrail::batchingResultNew(GrBatch* batch) { fBatchList.emplace_back(batchNode); } +void GrAuditTrail::getBoundsByClientID(SkTArray<BatchInfo>* outInfo, int clientID) { + Batches** batchesLookup = fClientIDLookup.find(clientID); + if (batchesLookup) { + // We track which batchlistID we're currently looking at. If it changes, then we + // need to push back a new batch info struct. We happen to know that batches are + // in sequential order in the batchlist, otherwise we'd have to do more bookkeeping + int currentBatchListID = kGrAuditTrailInvalidID; + for (int i = 0; i < (*batchesLookup)->count(); i++) { + const Batch* batch = (**batchesLookup)[i]; + + // Because we will copy out all of the batches associated with a given + // batch list id everytime the id changes, we only have to update our struct + // when the id changes. + if (kGrAuditTrailInvalidID == currentBatchListID || + batch->fBatchListID != currentBatchListID) { + BatchInfo& outBatchInfo = outInfo->push_back(); + currentBatchListID = batch->fBatchListID; + + // copy out all of the batches so the client can display them even if + // they have a different clientID + const BatchNode* bn = fBatchList[currentBatchListID]; + outBatchInfo.fBounds = bn->fBounds; + for (int j = 0; j < bn->fChildren.count(); j++) { + BatchInfo::Batch& outBatch = outBatchInfo.fBatches.push_back(); + const Batch* currentBatch = bn->fChildren[j]; + outBatch.fBounds = currentBatch->fBounds; + outBatch.fClientID = currentBatch->fClientID; + } + } + } + } +} + + template <typename T> void GrAuditTrail::JsonifyTArray(SkString* json, const char* name, const T& array, bool addComma) { |