mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-28 01:51:34 +00:00
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>
This commit is contained in:
parent
7327c051d0
commit
ecfb00fb09
15
meson.build
15
meson.build
@ -1972,6 +1972,14 @@ else
|
||||
dep_lmsensors = null_dep
|
||||
endif
|
||||
|
||||
with_perfetto = get_option('perfetto')
|
||||
with_datasources = get_option('datasources')
|
||||
with_any_datasource = with_datasources.length() != 0
|
||||
if with_perfetto
|
||||
dep_perfetto = dependency('perfetto', fallback: ['perfetto', 'dep_perfetto'])
|
||||
pre_args += '-DHAVE_PERFETTO'
|
||||
endif
|
||||
|
||||
# If the compiler supports it, put function and data symbols in their
|
||||
# own sections and GC the sections after linking. This lets drivers
|
||||
# drop shared code unused by that specific driver (particularly
|
||||
@ -2046,13 +2054,6 @@ endif
|
||||
# as GCC LTO drops them. See: https://bugs.freedesktop.org/show_bug.cgi?id=109391
|
||||
gcc_lto_quirk = (cc.get_id() == 'gcc') ? ['-fno-lto'] : []
|
||||
|
||||
with_perfetto = get_option('perfetto')
|
||||
with_datasources = get_option('datasources')
|
||||
with_any_datasource = with_datasources.length() != 0
|
||||
if with_perfetto
|
||||
dep_perfetto = dependency('perfetto', fallback: ['perfetto', 'dep_perfetto'])
|
||||
endif
|
||||
|
||||
subdir('include')
|
||||
subdir('bin')
|
||||
subdir('src')
|
||||
|
@ -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],
|
||||
|
45
src/util/u_perfetto.cc
Normal file
45
src/util/u_perfetto.cc
Normal file
@ -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);
|
||||
}
|
38
src/util/u_perfetto.h
Normal file
38
src/util/u_perfetto.h
Normal file
@ -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 */
|
Loading…
Reference in New Issue
Block a user