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

Unified Diff: src/gpu/GrDrawTarget.cpp

Issue 184443003: Add Gpu Tracing to Ganesh (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Partial version 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 side-by-side diff with in-line comments
Download patch
Index: src/gpu/GrDrawTarget.cpp
diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp
index fb4c9a1509a4ffffce549d8fe3116c88f373b10e..b0627e472aa4d4647f889b2c3694c9873ebddaf9 100644
--- a/src/gpu/GrDrawTarget.cpp
+++ b/src/gpu/GrDrawTarget.cpp
@@ -17,6 +17,7 @@
#include "GrVertexBuffer.h"
#include "SkStrokeRec.h"
+#include "SkTSort.h"
////////////////////////////////////////////////////////////////////////////////
@@ -89,7 +90,7 @@ void GrDrawTarget::DrawInfo::adjustStartIndex(int indexOffset) {
GrDrawTarget::GrDrawTarget(GrContext* context)
: fClip(NULL)
, fContext(context)
- , fPushGpuTraceCount(0) {
+ , fGpuTraceMarkerCount(0) {
SkASSERT(NULL != context);
fDrawState = &fDefaultDrawState;
@@ -548,28 +549,74 @@ void GrDrawTarget::drawPath(const GrPath* path, SkPath::FillType fill) {
this->onDrawPath(path, fill, dstCopy.texture() ? &dstCopy : NULL);
}
-void GrDrawTarget::instantGpuTraceEvent(const char* marker) {
- if (this->caps()->gpuTracingSupport()) {
- this->onInstantGpuTraceEvent(marker);
+SkString GrDrawTarget::getTraceString(SkTDArray<GpuTraceMarker>* markerArray,
+ int startIdx, int numMarkers) {
+ SkTQSort<GpuTraceMarker>(markerArray->begin() + startIdx,
+ markerArray->begin() + startIdx + numMarkers - 1);
+ SkString marker_string;
+ const char* currBaseCmd = "";
bsalomon 2014/03/17 17:50:38 It took me a little bit to understand what this is
egdaniel 2014/03/17 19:49:12 Agree. On 2014/03/17 17:50:38, bsalomon wrote:
+ int counter = 0;
+
+ // check used for GrGpuGL device after we've already collapsed all markers
+ if (1 == numMarkers && -1 == (*markerArray)[0].fID) {
+ marker_string.append((*markerArray)[0].fMarker);
+ return marker_string;
+ }
+
+ for (int i = startIdx; counter < numMarkers; ++i ) {
+ GpuTraceMarker& currMarker = markerArray->getAt(i);
+ const char* currCmd = currMarker.fMarker;
+ if (currCmd != currBaseCmd) {
+ if (counter != 0) {
+ marker_string.append("):");
+ }
+ marker_string.append(currCmd);
+ marker_string.append("(");
+ marker_string.appendS32(currMarker.fID);
+ currBaseCmd = currCmd;
+ } else {
+ marker_string.append(", ");
+ marker_string.appendS32(currMarker.fID);
+ }
+ ++counter;
}
+ if (counter > 0) {
+ marker_string.append(")");
+ }
+ return marker_string;
+}
+
+void GrDrawTarget::addTraceMarkerActiveSet(GpuTraceMarker* marker) {
+ this->fActiveTraceMarkers.push(*marker);
}
-void GrDrawTarget::pushGpuTraceEvent(const char* marker) {
- SkASSERT(fPushGpuTraceCount >= 0);
+void GrDrawTarget::removeTraceMarkerActiveSet(GpuTraceMarker* marker) {
+ SkASSERT(-1 != this->fActiveTraceMarkers.find(*marker));
+ int index = this->fActiveTraceMarkers.find(*marker);
+ this->fActiveTraceMarkers.remove(index);
+}
+
+void GrDrawTarget::addGpuTraceMarker(GpuTraceMarker* marker) {
if (this->caps()->gpuTracingSupport()) {
- this->onPushGpuTraceEvent(marker);
- ++fPushGpuTraceCount;
+ SkASSERT(fGpuTraceMarkerCount >= 0);
+ this->addTraceMarkerActiveSet(marker);
+ this->onAddGpuTraceMarker();
+ ++fGpuTraceMarkerCount;
}
}
-void GrDrawTarget::popGpuTraceEvent() {
- SkASSERT(fPushGpuTraceCount >= 1);
+void GrDrawTarget::removeGpuTraceMarker(GpuTraceMarker* marker) {
if (this->caps()->gpuTracingSupport()) {
- this->onPopGpuTraceEvent();
- --fPushGpuTraceCount;
+ SkASSERT(fGpuTraceMarkerCount >= 1);
+ this->removeTraceMarkerActiveSet(marker);
+ this->onRemoveGpuTraceMarker();
+ --fGpuTraceMarkerCount;
}
}
+bool GrDrawTarget::gpuTracingEnabled() const {
+ return this->getContext()->gpuTracingEnabled();
+}
////////////////////////////////////////////////////////////////////////////////
bool GrDrawTarget::willUseHWAALines() const {

Powered by Google App Engine
This is Rietveld 408576698