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

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

Issue 184443003: Add Gpu Tracing to Ganesh (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Android Fix 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
« no previous file with comments | « src/gpu/GrTraceMarker.cpp ('k') | src/gpu/gl/GrGLInterface.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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() : p_data_(NULL) {}
21
22 ~GrGpuTraceMarkerGenerator() {
23 if (p_data_) {
24 data_.fTarget->removeGpuTraceMarker(&(data_.fTraceMarker));
25 }
26 }
27
28 void Initialize(const char* marker_str, int* marker_counter, GrDrawTarget* t arget) {
29 data_.fTarget = target;
30 data_.fTraceMarker.fMarker = marker_str;
31 data_.fTraceMarker.fID = *marker_counter;
32 p_data_ = &data_;
33 data_.fTarget->addGpuTraceMarker(&(data_.fTraceMarker));
34 }
35
36 private:
37 /**
38 * This Data struct workaround is to avoid initializing all the members
39 * in Data during construction of this object, since this object is always
40 * constructed, even when tracing is disabled. If the members of Data were
41 * members of this class instead, compiler warnings occur about potential
42 * uninitialized accesses.
43 */
44 struct Data {
bsalomon 2014/03/24 14:34:38 Check out SkTLazy.
45 GrDrawTarget* fTarget;
46 GrGpuTraceMarker fTraceMarker;
47 };
48 Data* p_data_;
49 Data data_;
50 };
51
52 /**
53 * GR_CREATE_TRACE_MARKER will place begin and end trace markers for both
54 * cpu and gpu (if gpu tracing enabled) for the current scope.
55 * marker is of type const char* and target is of type GrDrawTarget*
56 */
57 #define GR_CREATE_TRACE_MARKER(name, target) \
58 static const char* SK_MACRO_APPEND_LINE(static_name) = name; \
59 static int SK_MACRO_APPEND_LINE(name_counter) = 0; \
60 INTERNAL_GR_CREATE_TRACE_MARKER(SK_MACRO_APPEND_LINE(static_name), \
61 SK_MACRO_APPEND_LINE(name_counter), \
62 target) \
63
64 #define INTERNAL_GR_CREATE_TRACE_MARKER(name, name_counter, target) \
65 GR_CREATE_GPU_TRACE_MARKER(name, name_counter, target) \
66 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("skia.gpu"),name, \
67 "id", name_counter) \
68 sk_atomic_inc(&name_counter); \
69
70 #define GR_CREATE_GPU_TRACE_MARKER(name, name_counter, target) \
71 GrGpuTraceMarkerGenerator SK_MACRO_APPEND_LINE(TMG); \
72 if (target->isGpuTracingEnabled()) { \
73 SK_MACRO_APPEND_LINE(TMG).Initialize(name, &name_counter, target);\
74 } \
75
76
77 #endif
78
OLDNEW
« no previous file with comments | « src/gpu/GrTraceMarker.cpp ('k') | src/gpu/gl/GrGLInterface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698