From 1444e82cd866488f7e8447959e7c7e3fbc784c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Fri, 16 Aug 2024 17:50:12 +0200 Subject: [PATCH] onscreen/native: Set latest cogl sync_fd on KMS update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See previous commit log on the effects of this. This means the deadline evasion needs to be added in both cases in clutter_frame_clock_notify_presented. v2: * Use meta_kms_update_set_sync_fd. (Jonas Ã…dahl) Part-of: Signed-off-by: Mingi Sung --- clutter/clutter/clutter-frame-clock.c | 4 ++-- src/backends/native/meta-onscreen-native.c | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c index 4bba34887..103f7c511 100644 --- a/clutter/clutter/clutter-frame-clock.c +++ b/clutter/clutter/clutter-frame-clock.c @@ -391,8 +391,8 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock, frame_clock->shortterm_max_update_duration_us = CLAMP (frame_clock->last_dispatch_lateness_us + dispatch_to_swap_us + - MAX (swap_to_rendering_done_us, - swap_to_flip_us + frame_clock->deadline_evasion_us), + MAX (swap_to_rendering_done_us, swap_to_flip_us) + + frame_clock->deadline_evasion_us, frame_clock->shortterm_max_update_duration_us, frame_clock->refresh_interval_us); diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c index 0c9fb842b..b642a57be 100644 --- a/src/backends/native/meta-onscreen-native.c +++ b/src/backends/native/meta-onscreen-native.c @@ -1315,6 +1315,8 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, g_autoptr (MetaDrmBuffer) buffer = NULL; MetaKmsCrtc *kms_crtc; MetaKmsDevice *kms_device; + int sync_fd; + COGL_TRACE_SCOPED_ANCHOR (MetaRendererNativePostKmsUpdate); COGL_TRACE_BEGIN_SCOPED (MetaRendererNativeSwapBuffers, @@ -1498,6 +1500,8 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, meta_kms_device_get_path (kms_device)); kms_update = meta_frame_native_steal_kms_update (frame_native); + sync_fd = cogl_context_get_latest_sync_fd (cogl_context); + meta_kms_update_set_sync_fd (kms_update, sync_fd); meta_kms_device_post_update (kms_device, kms_update, META_KMS_UPDATE_FLAG_NONE); clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_PENDING_PRESENTED);