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

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

Issue 1755563003: add /img/n/m endpoint to skiaserve (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: tweak 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
« no previous file with comments | « include/private/GrAuditTrail.h ('k') | tools/debugger/SkDebugCanvas.h » ('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 2016 Google Inc. 2 * Copyright 2016 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 "GrAuditTrail.h" 8 #include "GrAuditTrail.h"
9 #include "batches/GrBatch.h" 9 #include "batches/GrBatch.h"
10 10
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 60
61 // We use the batch pointer as a key to find the batchnode we are 'glomming' batches onto 61 // We use the batch pointer as a key to find the batchnode we are 'glomming' batches onto
62 fIDLookup.set(batch, fCurrentBatch->fBatchListID); 62 fIDLookup.set(batch, fCurrentBatch->fBatchListID);
63 BatchNode* batchNode = new BatchNode; 63 BatchNode* batchNode = new BatchNode;
64 batchNode->fBounds = fCurrentBatch->fBounds; 64 batchNode->fBounds = fCurrentBatch->fBounds;
65 batchNode->fRenderTargetUniqueID = batch->renderTargetUniqueID(); 65 batchNode->fRenderTargetUniqueID = batch->renderTargetUniqueID();
66 batchNode->fChildren.push_back(fCurrentBatch); 66 batchNode->fChildren.push_back(fCurrentBatch);
67 fBatchList.emplace_back(batchNode); 67 fBatchList.emplace_back(batchNode);
68 } 68 }
69 69
70 void GrAuditTrail::copyOutFromBatchList(BatchInfo* outBatchInfo, int batchListID ) {
71 SkASSERT(batchListID < fBatchList.count());
72 const BatchNode* bn = fBatchList[batchListID];
73 outBatchInfo->fBounds = bn->fBounds;
74 outBatchInfo->fRenderTargetUniqueID = bn->fRenderTargetUniqueID;
75 for (int j = 0; j < bn->fChildren.count(); j++) {
76 BatchInfo::Batch& outBatch = outBatchInfo->fBatches.push_back();
77 const Batch* currentBatch = bn->fChildren[j];
78 outBatch.fBounds = currentBatch->fBounds;
79 outBatch.fClientID = currentBatch->fClientID;
80 }
81 }
82
70 void GrAuditTrail::getBoundsByClientID(SkTArray<BatchInfo>* outInfo, int clientI D) { 83 void GrAuditTrail::getBoundsByClientID(SkTArray<BatchInfo>* outInfo, int clientI D) {
71 Batches** batchesLookup = fClientIDLookup.find(clientID); 84 Batches** batchesLookup = fClientIDLookup.find(clientID);
72 if (batchesLookup) { 85 if (batchesLookup) {
73 // We track which batchlistID we're currently looking at. If it changes , then we 86 // We track which batchlistID we're currently looking at. If it changes , then we
74 // need to push back a new batch info struct. We happen to know that ba tches are 87 // need to push back a new batch info struct. We happen to know that ba tches are
75 // in sequential order in the batchlist, otherwise we'd have to do more bookkeeping 88 // in sequential order in the batchlist, otherwise we'd have to do more bookkeeping
76 int currentBatchListID = kGrAuditTrailInvalidID; 89 int currentBatchListID = kGrAuditTrailInvalidID;
77 for (int i = 0; i < (*batchesLookup)->count(); i++) { 90 for (int i = 0; i < (*batchesLookup)->count(); i++) {
78 const Batch* batch = (**batchesLookup)[i]; 91 const Batch* batch = (**batchesLookup)[i];
79 92
80 // Because we will copy out all of the batches associated with a giv en 93 // Because we will copy out all of the batches associated with a giv en
81 // batch list id everytime the id changes, we only have to update ou r struct 94 // batch list id everytime the id changes, we only have to update ou r struct
82 // when the id changes. 95 // when the id changes.
83 if (kGrAuditTrailInvalidID == currentBatchListID || 96 if (kGrAuditTrailInvalidID == currentBatchListID ||
84 batch->fBatchListID != currentBatchListID) { 97 batch->fBatchListID != currentBatchListID) {
85 BatchInfo& outBatchInfo = outInfo->push_back(); 98 BatchInfo& outBatchInfo = outInfo->push_back();
86 currentBatchListID = batch->fBatchListID;
87 99
88 // copy out all of the batches so the client can display them ev en if 100 // copy out all of the batches so the client can display them ev en if
89 // they have a different clientID 101 // they have a different clientID
90 const BatchNode* bn = fBatchList[currentBatchListID]; 102 this->copyOutFromBatchList(&outBatchInfo, batch->fBatchListID);
91 outBatchInfo.fBounds = bn->fBounds;
92 outBatchInfo.fRenderTargetUniqueID = bn->fRenderTargetUniqueID;
93 for (int j = 0; j < bn->fChildren.count(); j++) {
94 BatchInfo::Batch& outBatch = outBatchInfo.fBatches.push_back ();
95 const Batch* currentBatch = bn->fChildren[j];
96 outBatch.fBounds = currentBatch->fBounds;
97 outBatch.fClientID = currentBatch->fClientID;
98 }
99 } 103 }
100 } 104 }
101 } 105 }
102 } 106 }
103 107
108 void GrAuditTrail::getBoundsByBatchListID(BatchInfo* outInfo, int batchListID) {
109 this->copyOutFromBatchList(outInfo, batchListID);
110 }
111
104 void GrAuditTrail::fullReset() { 112 void GrAuditTrail::fullReset() {
105 SkASSERT(fEnabled); 113 SkASSERT(fEnabled);
106 fBatchList.reset(); 114 fBatchList.reset();
107 fIDLookup.reset(); 115 fIDLookup.reset();
108 // free all client batches 116 // free all client batches
109 fClientIDLookup.foreach([](const int&, Batches** batches) { delete *batches; }); 117 fClientIDLookup.foreach([](const int&, Batches** batches) { delete *batches; });
110 fClientIDLookup.reset(); 118 fClientIDLookup.reset();
111 fBatchPool.reset(); // must be last, frees all of the memory 119 fBatchPool.reset(); // must be last, frees all of the memory
112 } 120 }
113 121
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 256
249 SkString GrAuditTrail::BatchNode::toJson() const { 257 SkString GrAuditTrail::BatchNode::toJson() const {
250 SkString json; 258 SkString json;
251 json.append("{"); 259 json.append("{");
252 json.appendf("\"RenderTarget\": \"%u\",", fRenderTargetUniqueID); 260 json.appendf("\"RenderTarget\": \"%u\",", fRenderTargetUniqueID);
253 skrect_to_json(&json, "Bounds", fBounds); 261 skrect_to_json(&json, "Bounds", fBounds);
254 JsonifyTArray(&json, "Batches", fChildren, true); 262 JsonifyTArray(&json, "Batches", fChildren, true);
255 json.append("}"); 263 json.append("}");
256 return json; 264 return json;
257 } 265 }
OLDNEW
« no previous file with comments | « include/private/GrAuditTrail.h ('k') | tools/debugger/SkDebugCanvas.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698