| OLD | NEW |
| 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 |
| 11 const int GrAuditTrail::kGrAuditTrailInvalidID = -1; | 11 const int GrAuditTrail::kGrAuditTrailInvalidID = -1; |
| 12 | 12 |
| 13 void GrAuditTrail::addBatch(const char* name, const SkRect& bounds) { |
| 14 SkASSERT(fEnabled); |
| 15 Batch* batch = new Batch; |
| 16 fBatchPool.emplace_back(batch); |
| 17 batch->fName = name; |
| 18 batch->fBounds = bounds; |
| 19 batch->fClientID = kGrAuditTrailInvalidID; |
| 20 batch->fBatchListID = kGrAuditTrailInvalidID; |
| 21 batch->fChildID = kGrAuditTrailInvalidID; |
| 22 fCurrentBatch = batch; |
| 23 |
| 24 if (fClientID != kGrAuditTrailInvalidID) { |
| 25 batch->fClientID = fClientID; |
| 26 Batches** batchesLookup = fClientIDLookup.find(fClientID); |
| 27 Batches* batches = nullptr; |
| 28 if (!batchesLookup) { |
| 29 batches = new Batches; |
| 30 fClientIDLookup.set(fClientID, batches); |
| 31 } else { |
| 32 batches = *batchesLookup; |
| 33 } |
| 34 |
| 35 batches->push_back(fCurrentBatch); |
| 36 } |
| 37 } |
| 38 |
| 13 void GrAuditTrail::batchingResultCombined(GrBatch* combiner) { | 39 void GrAuditTrail::batchingResultCombined(GrBatch* combiner) { |
| 14 int* indexPtr = fIDLookup.find(combiner); | 40 int* indexPtr = fIDLookup.find(combiner); |
| 15 SkASSERT(indexPtr); | 41 SkASSERT(indexPtr); |
| 16 int index = *indexPtr; | 42 int index = *indexPtr; |
| 17 SkASSERT(index < fBatchList.count()); | 43 SkASSERT(index < fBatchList.count()); |
| 18 BatchNode& batch = *fBatchList[index]; | 44 BatchNode& batch = *fBatchList[index]; |
| 19 | 45 |
| 20 // set the ids for the child batch | 46 // set the ids for the child batch |
| 21 fCurrentBatch->fBatchListID = index; | 47 fCurrentBatch->fBatchListID = index; |
| 22 fCurrentBatch->fChildID = batch.fChildren.count(); | 48 fCurrentBatch->fChildID = batch.fChildren.count(); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 BatchInfo::Batch& outBatch = outBatchInfo.fBatches.push_back
(); | 94 BatchInfo::Batch& outBatch = outBatchInfo.fBatches.push_back
(); |
| 69 const Batch* currentBatch = bn->fChildren[j]; | 95 const Batch* currentBatch = bn->fChildren[j]; |
| 70 outBatch.fBounds = currentBatch->fBounds; | 96 outBatch.fBounds = currentBatch->fBounds; |
| 71 outBatch.fClientID = currentBatch->fClientID; | 97 outBatch.fClientID = currentBatch->fClientID; |
| 72 } | 98 } |
| 73 } | 99 } |
| 74 } | 100 } |
| 75 } | 101 } |
| 76 } | 102 } |
| 77 | 103 |
| 104 void GrAuditTrail::fullReset() { |
| 105 SkASSERT(fEnabled); |
| 106 fBatchList.reset(); |
| 107 fIDLookup.reset(); |
| 108 // free all client batches |
| 109 fClientIDLookup.foreach([](const int&, Batches** batches) { delete *batches;
}); |
| 110 fClientIDLookup.reset(); |
| 111 fBatchPool.reset(); // must be last, frees all of the memory |
| 112 } |
| 78 | 113 |
| 79 template <typename T> | 114 template <typename T> |
| 80 void GrAuditTrail::JsonifyTArray(SkString* json, const char* name, const T& arra
y, | 115 void GrAuditTrail::JsonifyTArray(SkString* json, const char* name, const T& arra
y, |
| 81 bool addComma) { | 116 bool addComma) { |
| 82 if (array.count()) { | 117 if (array.count()) { |
| 83 if (addComma) { | 118 if (addComma) { |
| 84 json->appendf(","); | 119 json->appendf(","); |
| 85 } | 120 } |
| 86 json->appendf("\"%s\": [", name); | 121 json->appendf("\"%s\": [", name); |
| 87 for (int i = 0; i < array.count(); i++) { | 122 for (int i = 0; i < array.count(); i++) { |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 | 248 |
| 214 SkString GrAuditTrail::BatchNode::toJson() const { | 249 SkString GrAuditTrail::BatchNode::toJson() const { |
| 215 SkString json; | 250 SkString json; |
| 216 json.append("{"); | 251 json.append("{"); |
| 217 json.appendf("\"RenderTarget\": \"%u\",", fRenderTargetUniqueID); | 252 json.appendf("\"RenderTarget\": \"%u\",", fRenderTargetUniqueID); |
| 218 skrect_to_json(&json, "Bounds", fBounds); | 253 skrect_to_json(&json, "Bounds", fBounds); |
| 219 JsonifyTArray(&json, "Batches", fChildren, true); | 254 JsonifyTArray(&json, "Batches", fChildren, true); |
| 220 json.append("}"); | 255 json.append("}"); |
| 221 return json; | 256 return json; |
| 222 } | 257 } |
| OLD | NEW |