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

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

Issue 184443003: Add Gpu Tracing to Ganesh (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Added files Created 6 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
OLDNEW
(Empty)
1
2 /*
3 * Copyright 2014 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9 #include "GrDrawTarget.h"
10 #include "GrTracing.h"
11 #include "SkString.h"
12 #include "SkTDArray.h"
13 #include "SkTSort.h"
14
15 ////////////////////////////////////////////////////////////////////////////////
16
17 class GrTraceMarkerSet::Iter {
18 public:
19 Iter() {};
20 Iter& operator=(const Iter& i) {
21 fCurrentIndex = i.fCurrentIndex;
22 fMarkers = i.fMarkers;
23 return *this;
24 }
25 bool operator==(const Iter& i) const {
26 return fCurrentIndex == i.fCurrentIndex && fMarkers == i.fMarkers;
27 }
28 bool operator!=(const Iter& i) const { return !(*this == i); }
29 const GrGpuTraceMarker& operator*() const { return fMarkers->fMarkerArray[fC urrentIndex]; }
30 Iter& operator++() {
31 SkASSERT(*this != fMarkers->end());
32 ++fCurrentIndex;
33 return *this;
34 }
35
36 private:
37 friend class GrTraceMarkerSet;
38 explicit Iter(const GrTraceMarkerSet* markers, int index)
bsalomon 2014/03/20 16:32:53 don't need explicit with 2 args, right?
39 : fMarkers(markers), fCurrentIndex(index) {
40 SkASSERT(markers);
41 }
42
43 const GrTraceMarkerSet* fMarkers;
44 int fCurrentIndex;
45 };
46
47 ////////////////////////////////////////////////////////////////////////////////
48
49 GrTraceMarkerSet::GrTraceMarkerSet(const GrTraceMarkerSet& other) {
50 this->addSet(other);
51 }
52
53 void GrTraceMarkerSet::add(const GrGpuTraceMarker& marker) {
54 this->fMarkerArray.push(marker);
55 }
56
57 void GrTraceMarkerSet::addSet(const GrTraceMarkerSet& markerSet) {
58 for (Iter iter = markerSet.begin(); iter != markerSet.end(); ++iter) {
59 this->add(*iter);
60 }
61 }
62
63 void GrTraceMarkerSet::remove(const GrGpuTraceMarker& marker) {
64 SkASSERT(-1 != fMarkerArray.find(marker));
65 int index = this->fMarkerArray.find(marker);
66 this->fMarkerArray.remove(index);
67 }
68
69 int GrTraceMarkerSet::count() const {
70 return this->fMarkerArray.count();
71 }
72
73 SkString GrTraceMarkerSet::toString() const {
74 SkTQSort<GrGpuTraceMarker>(this->fMarkerArray.begin(), this->fMarkerArray.en d() - 1);
75 SkString marker_string;
76 const char* prevMarkerName = "";
77 int prevMarkerID = -1;
78 int counter = 0;
79 const int numMarkers = this->fMarkerArray.count();
80
81 // check used for GrGpuGL device after we've already collapsed all markers
82 if (1 == numMarkers && -1 == this->fMarkerArray[0].fID) {
83 marker_string.append(this->fMarkerArray[0].fMarker);
84 return marker_string;
85 }
86
87 for (int i = 0; i < numMarkers; ++i ) {
88 GrGpuTraceMarker& currMarker = this->fMarkerArray[i];
89 const char* currCmd = currMarker.fMarker;
90 if (currCmd != prevMarkerName) {
91 if (counter != 0) {
92 marker_string.append(")%");
93 }
94 marker_string.append(currCmd);
95 marker_string.append("(");
96 marker_string.appendS32(currMarker.fID);
97 prevMarkerName = currCmd;
98 } else if (currMarker.fID != prevMarkerID) {
99 marker_string.append(", ");
100 marker_string.appendS32(currMarker.fID);
101 }
102 prevMarkerID = currMarker.fID;
103 ++counter;
104 }
105 if (counter > 0) {
106 marker_string.append(")");
107 }
108 return marker_string;
109 }
110
111 GrTraceMarkerSet::Iter GrTraceMarkerSet::begin() const {
112 return Iter(this, 0);
113 }
114
115 GrTraceMarkerSet::Iter GrTraceMarkerSet::end() const {
116 return Iter(this, this->fMarkerArray.count());
117 }
118
119 ////////////////////////////////////////////////////////////////////////////////
120
121 GrGpuTraceMarkerGenerator::GrGpuTraceMarkerGenerator(const char* marker_str, int * marker_counter,
122 GrDrawTarget* target)
123 : fTarget(target), fTraceMarker(marker_str, *marker_counter) {
124 if (fTarget->isGpuTracingEnabled()) {
125 fTarget->addGpuTraceMarker(&fTraceMarker);
126 }
127 }
128
129 GrGpuTraceMarkerGenerator::~GrGpuTraceMarkerGenerator() {
130 if (fTarget->isGpuTracingEnabled()) {
131 fTarget->removeGpuTraceMarker(&fTraceMarker);
132 }
133 }
134
OLDNEW
« src/gpu/GrTracing.h ('K') | « src/gpu/GrTracing.h ('k') | src/gpu/gl/GrGLInterface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698