summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRob Clark <robdclark@chromium.org>2021-03-22 10:55:35 -0700
committerMarge Bot <eric+marge@anholt.net>2021-05-10 15:34:07 +0000
commitecfb00fb09a109b5de2cce21abe8be9ee66721bd (patch)
treed04f331349c8e4afd1528b3dcc97555ee0e5fb6b /src
parent7327c051d063b35b60f69023561c38d2db206ff4 (diff)
downloadmesa-ecfb00fb09a109b5de2cce21abe8be9ee66721bd.tar.gz
mesa-ecfb00fb09a109b5de2cce21abe8be9ee66721bd.tar.bz2
mesa-ecfb00fb09a109b5de2cce21abe8be9ee66721bd.zip
util/perfetto: Add one-time init
Various places around mesa which might want to register a data-source, etc, should call util_perfetto_init() first to ensure we connect to the tracing service. Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com> Acked-by: Emma Anholt <emma@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9901>
Diffstat (limited to 'src')
-rw-r--r--src/util/meson.build8
-rw-r--r--src/util/u_perfetto.cc45
-rw-r--r--src/util/u_perfetto.h38
3 files changed, 91 insertions, 0 deletions
diff --git a/src/util/meson.build b/src/util/meson.build
index 14cc2123511..b187a69cdfd 100644
--- a/src/util/meson.build
+++ b/src/util/meson.build
@@ -202,6 +202,14 @@ if with_platform_haiku
deps_for_libmesa_util += dep_network
endif
+if with_perfetto
+ files_mesa_util += files(
+ 'u_perfetto.cc',
+ 'u_perfetto.h',
+ )
+ deps_for_libmesa_util += dep_perfetto
+endif
+
_libmesa_util = static_library(
'mesa_util',
[files_mesa_util, files_debug_stack, format_srgb],
diff --git a/src/util/u_perfetto.cc b/src/util/u_perfetto.cc
new file mode 100644
index 00000000000..8de46a03614
--- /dev/null
+++ b/src/util/u_perfetto.cc
@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2021 Google, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <perfetto.h>
+
+#include "c11/threads.h"
+
+#include "u_perfetto.h"
+
+static void
+util_perfetto_init_once(void)
+{
+ // Connects to the system tracing service
+ perfetto::TracingInitArgs args;
+ args.backends = perfetto::kSystemBackend;
+ perfetto::Tracing::Initialize(args);
+}
+
+static once_flag perfetto_once_flag = ONCE_FLAG_INIT;
+
+void
+util_perfetto_init(void)
+{
+ call_once(&perfetto_once_flag, util_perfetto_init_once);
+}
diff --git a/src/util/u_perfetto.h b/src/util/u_perfetto.h
new file mode 100644
index 00000000000..a7ff1ddc29e
--- /dev/null
+++ b/src/util/u_perfetto.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright © 2021 Google, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _UTIL_PERFETTO_H
+#define _UTIL_PERFETTO_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void util_perfetto_init(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UTIL_PERFETTO_H */