Merge branch 'perfetto_fixups' into 'main'

Some perfetto flow fixups

See merge request wayland/weston!2058
This commit is contained in:
Derek Foreman 2026-04-29 10:20:11 -05:00
commit 79719d681e
4 changed files with 14 additions and 7 deletions

View file

@ -204,7 +204,7 @@ get_placeholder_color(struct weston_paint_node *pnode,
static void
paint_node_update_early(struct weston_paint_node *pnode)
{
WESTON_TRACE_FUNC_FLOW(&pnode->surface->flow_id);
WESTON_TRACE_FUNC_FLOW(&pnode->flow_id);
struct weston_matrix *mat = &pnode->buffer_to_output_matrix;
struct weston_output *output = pnode->output;
struct weston_surface *surface = pnode->surface;
@ -326,7 +326,7 @@ paint_node_validate_ready(struct weston_paint_node *pnode)
static void
paint_node_update_late(struct weston_paint_node *pnode)
{
WESTON_TRACE_FUNC_FLOW(&pnode->surface->flow_id);
WESTON_TRACE_FUNC_FLOW(&pnode->flow_id);
struct weston_surface *surf = pnode->surface;
struct weston_buffer *buffer = surf->buffer_ref.buffer;
struct weston_view *view = pnode->view;
@ -3295,7 +3295,7 @@ weston_output_damage(struct weston_output *output)
static void
paint_node_add_damage(struct weston_paint_node *node)
{
WESTON_TRACE_FUNC_FLOW(&node->surface->flow_id);
WESTON_TRACE_FUNC_FLOW(&node->flow_id);
struct weston_view *view = node->view;
pixman_region32_t damage;
@ -3324,7 +3324,7 @@ paint_node_add_damage(struct weston_paint_node *node)
static void
paint_node_flush_surface_damage(struct weston_paint_node *pnode)
{
WESTON_TRACE_FUNC_FLOW(&pnode->surface->flow_id);
WESTON_TRACE_FUNC_FLOW(&pnode->flow_id);
struct weston_output *output = pnode->output;
struct weston_surface *surface = pnode->surface;
struct weston_buffer *buffer = surface->buffer_ref.buffer;
@ -3351,6 +3351,9 @@ paint_node_flush_surface_damage(struct weston_paint_node *pnode)
TLP_SURFACE(surface), TLP_OUTPUT(output), TLP_END);
out:
/* We've flushed the surface's damage for *all* of its paint
* nodes, so we can reset the surface flow_id here.
*/
surface->flow_id = 0;
}
@ -3817,6 +3820,9 @@ weston_output_repaint(struct weston_output *output)
z_order_link) {
assert(pnode->view->output_mask & (1u << pnode->output->id));
assert(pnode->output == output);
/* Reset paint node perfetto flows at start of repaint */
pnode->flow_id = 0;
}
/* Find the highest protection desired for an output */

View file

@ -36,7 +36,6 @@
struct weston_fifo {
struct weston_surface *surface;
struct wl_listener surface_destroy_listener;
uint64_t flow_id;
};
static void

View file

@ -678,6 +678,8 @@ enum try_view_on_plane_failure_reasons {
* A generic data structure unique for surface-view-output combination.
*/
struct weston_paint_node {
uint64_t flow_id; /* Perfetto flow id */
/* Immutable members: */
/* struct weston_surface::paint_node_list */

View file

@ -143,7 +143,7 @@ weston_timeline_perfetto(struct weston_log_scope *timeline_scope,
break;
case TLP_CORE_FLUSH_DAMAGE:
WESTON_TRACE_TIMESTAMP_END("Damaged", surface->damage_track_id, CLOCK_MONOTONIC, now_ns);
WESTON_TRACE_TIMESTAMP_BEGIN("Clean", surface->damage_track_id, surface->flow_id, CLOCK_MONOTONIC, now_ns);
WESTON_TRACE_TIMESTAMP_BEGIN("Clean", surface->damage_track_id, 0, CLOCK_MONOTONIC, now_ns);
break;
case TLP_CORE_REPAINT_BEGIN:
WESTON_TRACE_TIMESTAMP_END("Scheduled", output->paint_track_id, CLOCK_MONOTONIC, now_ns);
@ -162,7 +162,7 @@ weston_timeline_perfetto(struct weston_log_scope *timeline_scope,
case TLP_CORE_COMMIT_DAMAGE:
WESTON_TRACE_TIMESTAMP_END("Clean", surface->damage_track_id, CLOCK_MONOTONIC, now_ns);
WESTON_TRACE_TIMESTAMP_END("Damaged", surface->damage_track_id, CLOCK_MONOTONIC, now_ns);
WESTON_TRACE_TIMESTAMP_BEGIN("Damaged", surface->damage_track_id, 0, CLOCK_MONOTONIC, now_ns);
WESTON_TRACE_TIMESTAMP_BEGIN("Damaged", surface->damage_track_id, surface->flow_id, CLOCK_MONOTONIC, now_ns);
break;
case TLP_RENDERER_GPU_BEGIN:
WESTON_TRACE_TIMESTAMP_BEGIN("Active", output->gpu_track_id, 0, CLOCK_MONOTONIC, gpu_ns);