diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/util/meson.build | 8 | ||||
-rw-r--r-- | src/util/u_perfetto.cc | 45 | ||||
-rw-r--r-- | src/util/u_perfetto.h | 38 |
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 */ |