From 694675868247095762c792e1be979b03a2fc2141 Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Wed, 11 Dec 2024 16:20:09 -0600 Subject: [PATCH] wsi/wayland: Move perfetto flow_ids into loader_wayland_buffer Pull some more common stuff into the new abstraction. Signed-off-by: Derek Foreman Part-of: --- src/loader/loader_wayland_helper.c | 8 ++++++++ src/loader/loader_wayland_helper.h | 4 ++++ src/vulkan/wsi/wsi_common_wayland.c | 7 +++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/loader/loader_wayland_helper.c b/src/loader/loader_wayland_helper.c index 825e0882304..9a7ebbef449 100644 --- a/src/loader/loader_wayland_helper.c +++ b/src/loader/loader_wayland_helper.c @@ -170,6 +170,7 @@ loader_wayland_wrap_buffer(struct loader_wayland_buffer *lwb, { lwb->buffer = wl_buffer; lwb->id = wl_proxy_get_id((struct wl_proxy *)wl_buffer); + lwb->flow_id = 0; } void @@ -178,4 +179,11 @@ loader_wayland_buffer_destroy(struct loader_wayland_buffer *lwb) wl_buffer_destroy(lwb->buffer); lwb->buffer = NULL; lwb->id = 0; + lwb->flow_id = 0; +} + +void +loader_wayland_buffer_set_flow(struct loader_wayland_buffer *lwb, uint64_t flow_id) +{ + lwb->flow_id = flow_id; } diff --git a/src/loader/loader_wayland_helper.h b/src/loader/loader_wayland_helper.h index ba206628c2c..816e638d093 100644 --- a/src/loader/loader_wayland_helper.h +++ b/src/loader/loader_wayland_helper.h @@ -29,6 +29,7 @@ struct loader_wayland_buffer { struct wl_buffer *buffer; uint32_t id; + uint64_t flow_id; }; #ifndef HAVE_WL_DISPATCH_QUEUE_TIMEOUT @@ -56,4 +57,7 @@ loader_wayland_wrap_buffer(struct loader_wayland_buffer *lwb, void loader_wayland_buffer_destroy(struct loader_wayland_buffer *lwb); +void +loader_wayland_buffer_set_flow(struct loader_wayland_buffer *lwb, uint64_t flow_id); + #endif diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index 22858caee4a..5b8edfdd35d 100644 --- a/src/vulkan/wsi/wsi_common_wayland.c +++ b/src/vulkan/wsi/wsi_common_wayland.c @@ -163,7 +163,6 @@ struct wsi_wl_image { int shm_fd; void *shm_ptr; unsigned shm_size; - uint64_t flow_id; struct wp_linux_drm_syncobj_timeline_v1 *wl_syncobj_timeline[WSI_ES_COUNT]; }; @@ -2658,7 +2657,7 @@ wsi_wl_swapchain_acquire_next_image_explicit(struct wsi_swapchain *wsi_chain, STACK_ARRAY_FINISH(images); if (result == VK_SUCCESS) { - chain->images[*image_index].flow_id = id; + loader_wayland_buffer_set_flow(&chain->images[*image_index].wayland_buffer, id); if (chain->suboptimal) result = VK_SUBOPTIMAL_KHR; } @@ -2704,7 +2703,7 @@ wsi_wl_swapchain_acquire_next_image_implicit(struct wsi_swapchain *wsi_chain, /* We found a non-busy image */ *image_index = i; chain->images[i].busy = true; - chain->images[i].flow_id = id; + loader_wayland_buffer_set_flow(&chain->images[i].wayland_buffer, id); return (chain->suboptimal ? VK_SUBOPTIMAL_KHR : VK_SUCCESS); } } @@ -2951,7 +2950,7 @@ wsi_wl_swapchain_queue_present(struct wsi_swapchain *wsi_chain, struct wsi_wl_swapchain *chain = (struct wsi_wl_swapchain *)wsi_chain; bool timestamped = false; bool queue_dispatched = false; - uint64_t flow_id = chain->images[image_index].flow_id; + uint64_t flow_id = chain->images[image_index].wayland_buffer.flow_id; MESA_TRACE_FUNC_FLOW(&flow_id);