Add flag to force gpu trace markers to be used and printed out for debugging.
BUG=skia:
Review URL: https://codereview.chromium.org/976413002
diff --git a/include/gpu/GrConfig.h b/include/gpu/GrConfig.h
index d48ccd5..6a00eab 100644
--- a/include/gpu/GrConfig.h
+++ b/include/gpu/GrConfig.h
@@ -232,4 +232,12 @@
#define GR_ALWAYS_ALLOCATE_ON_HEAP 0
#endif
+/**
+ * GR_FORCE_GPU_TRACE_DEBUGGING will force gpu tracing/debug markers to be turned on. The trace
+ * markers will be printed out instead of making the backend calls to push and pop them.
+ */
+#if !defined(GR_FORCE_GPU_TRACE_DEBUGGING)
+ #define GR_FORCE_GPU_TRACE_DEBUGGING 0
+#endif
+
#endif
diff --git a/src/gpu/GrDrawTargetCaps.h b/src/gpu/GrDrawTargetCaps.h
index 61ec3b2..9a08eff 100644
--- a/src/gpu/GrDrawTargetCaps.h
+++ b/src/gpu/GrDrawTargetCaps.h
@@ -80,7 +80,11 @@
bool pathRenderingSupport() const { return fPathRenderingSupport; }
bool dstReadInShaderSupport() const { return fDstReadInShaderSupport; }
bool discardRenderTargetSupport() const { return fDiscardRenderTargetSupport; }
+#if GR_FORCE_GPU_TRACE_DEBUGGING
+ bool gpuTracingSupport() const { return true; }
+#else
bool gpuTracingSupport() const { return fGpuTracingSupport; }
+#endif
bool compressedTexSubImageSupport() const { return fCompressedTexSubImageSupport; }
bool oversizedStencilSupport() const { return fOversizedStencilSupport; }
diff --git a/src/gpu/GrTracing.h b/src/gpu/GrTracing.h
index 3327e2c..0f76f23 100644
--- a/src/gpu/GrTracing.h
+++ b/src/gpu/GrTracing.h
@@ -85,6 +85,11 @@
INTERNAL_TRACE_EVENT_ADD_SCOPED(TRACE_DISABLED_BY_DEFAULT("skia.gpu"),name, \
"id", name_counter, ##__VA_ARGS__);
+#if GR_FORCE_GPU_TRACE_DEBUGGING
+#define GR_CREATE_GPU_TRACE_MARKER(name, name_counter, target) \
+ GrGpuTraceMarkerGenerator SK_MACRO_APPEND_LINE(TMG)(target); \
+ SK_MACRO_APPEND_LINE(TMG).initialize(name, &name_counter);
+#else
#define GR_CREATE_GPU_TRACE_MARKER(name, name_counter, target) \
GrGpuTraceMarkerGenerator SK_MACRO_APPEND_LINE(TMG)(target); \
bool SK_MACRO_APPEND_LINE(gpuTracingEnabled); \
@@ -93,7 +98,7 @@
if (SK_MACRO_APPEND_LINE(gpuTracingEnabled)) { \
SK_MACRO_APPEND_LINE(TMG).initialize(name, &name_counter); \
}
-
+#endif
#define GR_CREATE_TRACE_MARKER_CONTEXT(name, context) \
INTERNAL_GR_CREATE_TRACE_MARKER_SCOPED_C(name, context)
@@ -114,6 +119,11 @@
INTERNAL_TRACE_EVENT_ADD_SCOPED(TRACE_DISABLED_BY_DEFAULT("skia.gpu"),name, \
"id", name_counter, ##__VA_ARGS__);
+#if GR_FORCE_GPU_TRACE_DEBUGGING
+#define GR_CREATE_GPU_TRACE_MARKER_C(name, name_counter, context) \
+ GrGpuTraceMarkerGeneratorContext SK_MACRO_APPEND_LINE(TMG)(context); \
+ SK_MACRO_APPEND_LINE(TMG).initialize(name, &name_counter);
+#else
#define GR_CREATE_GPU_TRACE_MARKER_C(name, name_counter, context) \
GrGpuTraceMarkerGeneratorContext SK_MACRO_APPEND_LINE(TMG)(context); \
bool SK_MACRO_APPEND_LINE(gpuTracingEnabled); \
@@ -122,5 +132,6 @@
if (SK_MACRO_APPEND_LINE(gpuTracingEnabled)) { \
SK_MACRO_APPEND_LINE(TMG).initialize(name, &name_counter); \
}
+#endif
#endif
diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp
index 8e892ee..b790140 100644
--- a/src/gpu/gl/GrGLGpu.cpp
+++ b/src/gpu/gl/GrGLGpu.cpp
@@ -2778,13 +2778,21 @@
if (this->caps()->gpuTracingSupport()) {
const GrTraceMarkerSet& markerArray = this->getActiveTraceMarkers();
SkString markerString = markerArray.toStringLast();
+#if GR_FORCE_GPU_TRACE_DEBUGGING
+ SkDebugf("%s\n", markerString.c_str());
+#else
GL_CALL(PushGroupMarker(0, markerString.c_str()));
+#endif
}
}
void GrGLGpu::didRemoveGpuTraceMarker() {
if (this->caps()->gpuTracingSupport()) {
+#if GR_FORCE_GPU_TRACE_DEBUGGING
+ SkDebugf("Pop trace marker.\n");
+#else
GL_CALL(PopGroupMarker());
+#endif
}
}