The open source OpenXR runtime
at main 108 lines 2.6 kB view raw
1// Copyright 2020-2021, Collabora, Ltd. 2// SPDX-License-Identifier: BSL-1.0 3/*! 4 * @file 5 * @brief Tracing support code, see @ref tracing. 6 * @author Jakob Bornecrantz <jakob@collabora.com> 7 * @ingroup aux_util 8 */ 9 10#include "xrt/xrt_compiler.h" 11#include "xrt/xrt_config_os.h" 12#include "xrt/xrt_config_have.h" 13 14#include "os/os_time.h" 15 16#include "util/u_debug.h" 17#include "util/u_trace_marker.h" 18 19 20 21#ifdef U_TRACE_PERCETTO 22 23DEBUG_GET_ONCE_BOOL_OPTION(tracing, "XRT_TRACING", false) 24 25PERCETTO_CATEGORY_DEFINE(U_TRACE_CATEGORIES) 26 27PERCETTO_TRACK_DEFINE(pc_cpu, PERCETTO_TRACK_EVENTS); 28PERCETTO_TRACK_DEFINE(pc_allotted, PERCETTO_TRACK_EVENTS); 29PERCETTO_TRACK_DEFINE(pc_gpu, PERCETTO_TRACK_EVENTS); 30PERCETTO_TRACK_DEFINE(pc_margin, PERCETTO_TRACK_EVENTS); 31PERCETTO_TRACK_DEFINE(pc_error, PERCETTO_TRACK_EVENTS); 32PERCETTO_TRACK_DEFINE(pc_info, PERCETTO_TRACK_EVENTS); 33PERCETTO_TRACK_DEFINE(pc_present, PERCETTO_TRACK_EVENTS); 34PERCETTO_TRACK_DEFINE(pa_cpu, PERCETTO_TRACK_EVENTS); 35PERCETTO_TRACK_DEFINE(pa_draw, PERCETTO_TRACK_EVENTS); 36PERCETTO_TRACK_DEFINE(pa_wait, PERCETTO_TRACK_EVENTS); 37 38static enum u_trace_which static_which; 39static bool static_inited = false; 40 41 42void 43u_trace_marker_setup(enum u_trace_which which) 44{ 45 static_which = which; 46 47 I_PERCETTO_TRACK_PTR(pc_cpu)->name = "PC 1 Sleep"; 48 I_PERCETTO_TRACK_PTR(pc_allotted)->name = "PC 2 Allotted time"; 49 I_PERCETTO_TRACK_PTR(pc_gpu)->name = "PC 3 GPU"; 50 I_PERCETTO_TRACK_PTR(pc_margin)->name = "PC 4 Margin"; 51 I_PERCETTO_TRACK_PTR(pc_error)->name = "PC 5 Error"; 52 I_PERCETTO_TRACK_PTR(pc_info)->name = "PC 6 Info"; 53 I_PERCETTO_TRACK_PTR(pc_present)->name = "PC 7 Present"; 54 55 I_PERCETTO_TRACK_PTR(pa_cpu)->name = "PA 1 App"; 56 I_PERCETTO_TRACK_PTR(pa_draw)->name = "PA 2 Draw"; 57 I_PERCETTO_TRACK_PTR(pa_wait)->name = "PA 3 Wait"; 58} 59 60void 61u_trace_marker_init(void) 62{ 63 if (!debug_get_bool_option_tracing()) { 64 return; 65 } 66 67 if (static_inited) { 68 return; 69 } 70 static_inited = true; 71 72 int ret = PERCETTO_INIT(PERCETTO_CLOCK_MONOTONIC); 73 if (ret != 0) { 74 return; 75 } 76 77 if (static_which == U_TRACE_WHICH_SERVICE) { 78 PERCETTO_REGISTER_TRACK(pc_cpu); 79 PERCETTO_REGISTER_TRACK(pc_allotted); 80 PERCETTO_REGISTER_TRACK(pc_gpu); 81 PERCETTO_REGISTER_TRACK(pc_margin); 82 PERCETTO_REGISTER_TRACK(pc_error); 83 PERCETTO_REGISTER_TRACK(pc_info); 84 PERCETTO_REGISTER_TRACK(pc_present); 85 86 PERCETTO_REGISTER_TRACK(pa_cpu); 87 PERCETTO_REGISTER_TRACK(pa_draw); 88 PERCETTO_REGISTER_TRACK(pa_wait); 89 } 90} 91 92#else // !U_TRACE_PERCETTO 93 94void 95u_trace_marker_setup(enum u_trace_which which) 96{ 97 (void)which; 98 99 // Noop 100} 101 102void 103u_trace_marker_init(void) 104{ 105 // Noop 106} 107 108#endif // !U_TRACE_PERCETTO