aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrAuditTrail.cpp
diff options
context:
space:
mode:
authorGravatar joshualitt <joshualitt@chromium.org>2016-02-29 11:15:06 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-02-29 11:15:06 -0800
commit10d8fc29bc1605c134e98f5b58c2efb73cef6073 (patch)
tree702f20b251cfa0dfb6c858269ed148ec9e0ee62c /src/gpu/GrAuditTrail.cpp
parent790d5132620d86813380d3df251e80dd2b41a409 (diff)
Render batch bounds as stroke rects
Diffstat (limited to 'src/gpu/GrAuditTrail.cpp')
-rw-r--r--src/gpu/GrAuditTrail.cpp34
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) {