OLD | NEW |
---|---|
(Empty) | |
1 /* | |
2 * Copyright 2014 Google Inc. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license that can be | |
5 * found in the LICENSE file. | |
6 */ | |
7 | |
8 #ifndef GrTracing_DEFINED | |
9 #define GrTracing_DEFINED | |
10 | |
11 #include "GrDrawTarget.h" | |
12 #include "GrTraceMarker.h" | |
13 #include "SkTraceEvent.h" | |
14 | |
15 /** | |
16 * Marker generation class used for adding and removing markers around code bloc ks | |
17 */ | |
18 class GrGpuTraceMarkerGenerator : public ::SkNoncopyable { | |
19 public: | |
20 GrGpuTraceMarkerGenerator(GrDrawTarget* target) : fTarget(target) {} | |
21 | |
22 ~GrGpuTraceMarkerGenerator() { | |
23 if (fTraceMarker.isValid()) { | |
24 fTarget->removeGpuTraceMarker(fTraceMarker.get()); | |
25 } | |
26 } | |
27 | |
28 void initialize(const char* marker_str, int* marker_counter) { | |
29 GrGpuTraceMarker* traceMarker = fTraceMarker.init(); | |
30 traceMarker->fMarker = marker_str; | |
31 traceMarker->fID = *marker_counter; | |
32 fTarget->addGpuTraceMarker(traceMarker); | |
33 } | |
34 | |
35 private: | |
36 GrDrawTarget* fTarget; | |
37 SkTLazy<GrGpuTraceMarker> fTraceMarker; | |
38 }; | |
39 | |
40 /** | |
41 * GR_CREATE_TRACE_MARKER will place begin and end trace markers for both | |
42 * cpu and gpu (if gpu tracing enabled) for the current scope. | |
tomhudson
2014/03/24 16:31:43
Just to check: does this default to always-on for
egdaniel
2014/03/24 16:59:59
So the cpu Trace events are set using TRACE_EVENT1
| |
43 * marker is of type const char* and target is of type GrDrawTarget* | |
44 */ | |
45 #define GR_CREATE_TRACE_MARKER(name, target) \ | |
46 static const char* SK_MACRO_APPEND_LINE(static_name) = name; \ | |
47 static int SK_MACRO_APPEND_LINE(name_counter) = 0; \ | |
48 INTERNAL_GR_CREATE_TRACE_MARKER(SK_MACRO_APPEND_LINE(static_name), \ | |
49 SK_MACRO_APPEND_LINE(name_counter), \ | |
50 target) \ | |
51 | |
52 #define INTERNAL_GR_CREATE_TRACE_MARKER(name, name_counter, target) \ | |
53 GR_CREATE_GPU_TRACE_MARKER(name, name_counter, target) \ | |
54 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("skia.gpu"),name, \ | |
55 "id", name_counter) \ | |
56 sk_atomic_inc(&name_counter); \ | |
57 | |
58 #define GR_CREATE_GPU_TRACE_MARKER(name, name_counter, target) \ | |
59 GrGpuTraceMarkerGenerator SK_MACRO_APPEND_LINE(TMG)(target); \ | |
60 if (target->isGpuTracingEnabled()) { \ | |
61 SK_MACRO_APPEND_LINE(TMG).initialize(name, &name_counter); \ | |
62 } \ | |
63 | |
64 | |
65 #endif | |
66 | |
OLD | NEW |