blob: 4aa4f5c9f563d0280fb82c49da3ceb64fca8b302 [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef VM_TOOLS_SOMMELIER_SOMMELIER_TRACING_H_
#define VM_TOOLS_SOMMELIER_SOMMELIER_TRACING_H_
#if defined(PERFETTO_TRACING)
#include <perfetto.h>
#include <xcb/xcb.h>
PERFETTO_DEFINE_CATEGORIES(
perfetto::Category("surface").SetDescription(
"Events for Wayland surface management"),
perfetto::Category("display").SetDescription("Events for Wayland display"),
perfetto::Category("drm").SetDescription("Events for Wayland drm"),
perfetto::Category("shell").SetDescription("Events for Wayland shell"),
perfetto::Category("shm").SetDescription(
"Events for Wayland shared memory"),
perfetto::Category("viewport")
.SetDescription("Events for Wayland viewport"),
perfetto::Category("sync").SetDescription("Events for Wayland sync points"),
perfetto::Category("x11wm").SetDescription(
"Events for X11 window management"),
perfetto::Category("gaming").SetDescription("Events for Gaming"),
perfetto::Category("other").SetDescription("Uncategorized Wayland calls."));
void perfetto_annotate_atom(struct sl_context* ctx,
const perfetto::EventContext& perfetto,
const char* event_name,
xcb_atom_t atom);
void perfetto_annotate_xcb_property_state(const perfetto::EventContext& event,
const char* name,
uint32_t state);
void perfetto_annotate_window(struct sl_context* ctx,
const perfetto::EventContext& perfetto,
const char* event_name,
xcb_window_t window_id);
void perfetto_annotate_size_hints(const perfetto::EventContext& perfetto,
const struct sl_wm_size_hints& size_hints);
void perfetto_annotate_cardinal_list(const perfetto::EventContext& perfetto,
const char* event_name,
xcb_get_property_reply_t* reply);
void perfetto_annotate_time_sync(const perfetto::EventContext& perfetto);
#else
#define TRACE_EVENT(category, name, ...)
#endif
void initialize_tracing(bool in_process_backend, bool system_backend);
void enable_tracing(bool create_session);
void dump_trace(char const* filename);
#endif // VM_TOOLS_SOMMELIER_SOMMELIER_TRACING_H_