diff options
author | 2014-06-19 10:19:29 -0700 | |
---|---|---|
committer | 2014-06-19 10:19:29 -0700 | |
commit | bbcb38df4f7477aa0a38da00a0757586a0125954 (patch) | |
tree | 6828c395bf84d45ee94922cfac22ffc1bb4eb089 /src/gpu/GrTracing.h | |
parent | 3f73e8c8d589e0d5a1f75327b4aa22c1e745732d (diff) |
Allow gpu debug markers to be placed by using a GrContext
If a marker is placed using a GrContext, it will add a marker to both the
drawBuffer and gpu targets of that context.
BUG=skia:
R=bsalomon@google.com
Author: egdaniel@google.com
Review URL: https://codereview.chromium.org/340893002
Diffstat (limited to 'src/gpu/GrTracing.h')
-rw-r--r-- | src/gpu/GrTracing.h | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/src/gpu/GrTracing.h b/src/gpu/GrTracing.h index cfce039b6c..311042f27b 100644 --- a/src/gpu/GrTracing.h +++ b/src/gpu/GrTracing.h @@ -9,6 +9,8 @@ #define GrTracing_DEFINED #include "GrDrawTarget.h" +#include "GrGpu.h" +#include "GrInOrderDrawBuffer.h" #include "GrTraceMarker.h" #include "SkTraceEvent.h" @@ -37,6 +39,28 @@ private: SkTLazy<GrGpuTraceMarker> fTraceMarker; }; +class GrGpuTraceMarkerGeneratorContext : public ::SkNoncopyable { +public: + GrGpuTraceMarkerGeneratorContext(GrContext* context) : fContext(context) {} + + ~GrGpuTraceMarkerGeneratorContext() { + if (fTraceMarker.isValid()) { + fContext->removeGpuTraceMarker(fTraceMarker.get()); + } + } + + void initialize(const char* marker_str, int* marker_counter) { + GrGpuTraceMarker* traceMarker = fTraceMarker.init(); + traceMarker->fMarker = marker_str; + traceMarker->fID = *marker_counter; + fContext->addGpuTraceMarker(traceMarker); + } + +private: + GrContext* fContext; + SkTLazy<GrGpuTraceMarker> fTraceMarker; +}; + /** * GR_CREATE_TRACE_MARKER will place begin and end trace markers for both * cpu and gpu (if gpu tracing enabled) for the current scope. @@ -48,12 +72,12 @@ private: INTERNAL_GR_CREATE_TRACE_MARKER(SK_MACRO_APPEND_LINE(static_name), \ SK_MACRO_APPEND_LINE(name_counter), \ target) \ + sk_atomic_inc(&SK_MACRO_APPEND_LINE(name_counter)); \ #define INTERNAL_GR_CREATE_TRACE_MARKER(name, name_counter, target) \ GR_CREATE_GPU_TRACE_MARKER(name, name_counter, target) \ TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("skia.gpu"),name, \ "id", name_counter) \ - sk_atomic_inc(&name_counter); \ #define GR_CREATE_GPU_TRACE_MARKER(name, name_counter, target) \ GrGpuTraceMarkerGenerator SK_MACRO_APPEND_LINE(TMG)(target); \ @@ -61,5 +85,24 @@ private: SK_MACRO_APPEND_LINE(TMG).initialize(name, &name_counter); \ } \ +#define GR_CREATE_TRACE_MARKER_CONTEXT(name, context) \ + static const char* SK_MACRO_APPEND_LINE(static_name) = name; \ + static int SK_MACRO_APPEND_LINE(name_counter) = 0; \ + INTERNAL_GR_CREATE_TRACE_MARKER_C(SK_MACRO_APPEND_LINE(static_name), \ + SK_MACRO_APPEND_LINE(name_counter), \ + context) \ + sk_atomic_inc(&SK_MACRO_APPEND_LINE(name_counter)); \ + +#define INTERNAL_GR_CREATE_TRACE_MARKER_C(name, name_counter, context) \ + GR_CREATE_GPU_TRACE_MARKER_C(name, name_counter, context) \ + TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("skia.gpu"),name, \ + "id", name_counter) \ + +#define GR_CREATE_GPU_TRACE_MARKER_C(name, name_counter, context) \ + GrGpuTraceMarkerGeneratorContext SK_MACRO_APPEND_LINE(TMG)(context); \ + if (context->isGpuTracingEnabled()) { \ + SK_MACRO_APPEND_LINE(TMG).initialize(name, &name_counter); \ + } \ + #endif |