weston/libweston
Derek Foreman 5a48cedc7b drm: Improve VRR timing at start of repaint loop
There was an old kernel bug where the drm driver could give us a stale
timestamp. We worked around this by performing a page flip at the
start of the repaint loop.

Now that we support VRR, when we don't render our refresh rate drops to the
display's lowest possible refresh rate. This leaves us with a race where
the repaint loop could be started between the mode's refresh rate and the
lowest possible VRR rate - which is indistinguishable from a stale
timestamp. In this case we'd perform a needless page flip and potentially
miss an opportunity to render.

The kernel bug was introduced in v3.16 in commit 844b03f27739135 and later
fixed in v4.1 in commit fdb68e09bbb1c98

Since the vrr_capable property was introduced in v4.20 in commit
ba1b0f6c73d4ea1, any kernel that supports VRR is new enough not to give us
stale timestamps, so we don't have to miss these opportunities.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2025-06-27 14:51:49 +01:00
..
backend-drm drm: Improve VRR timing at start of repaint loop 2025-06-27 14:51:49 +01:00
backend-headless libweston: Vulkan renderer 2025-05-23 20:36:05 +01:00
backend-pipewire backend-pipewire: add Vulkan renderer support 2025-05-27 17:13:15 +02:00
backend-rdp backend-rdp: fix build with freerdp 3.15.0 2025-06-23 13:19:40 +00:00
backend-vnc backend-vnc: add Vulkan renderer support 2025-05-27 17:13:15 +02:00
backend-wayland backend-wayland: Remove zwp_fullscreen 2025-05-30 14:31:07 +03:00
backend-x11 libweston: Vulkan renderer 2025-05-23 20:36:05 +01:00
color-lcms color: print details of the color pipeline 2025-06-17 10:40:03 +03:00
desktop xdg-shell: Reset configure_idle to NULL at first 2025-06-07 15:08:08 +08:00
perfetto libweston: Add support for perfetto profiling 2025-01-24 12:22:13 +00:00
renderer-gl gl-renderer: Don't hard-stop if debugging scopes aren't enabled 2025-06-04 17:38:16 +03:00
renderer-vulkan vulkan-renderer: support dmabuf renderbuffers 2025-06-25 14:12:22 +00:00
shell-utils libweston: Add shell_private data 2025-03-04 12:30:51 +00:00
animation.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
auth.c libweston: Add user authentication support via PAM 2022-11-23 16:58:48 +01:00
backend.h drm-backend: Add Variable Refresh Rate modes 2025-02-21 06:49:42 +00:00
bindings.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
clipboard.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
color-management.c shared: Rename NULL and not NULL pointer assertions 2025-02-26 23:50:45 +01:00
color-management.h color: update color-management protocol to wp-v1 2025-02-26 10:09:43 -03:00
color-noop.c color-noop: improve profile error messages 2025-04-03 17:46:45 +03:00
color-operations.c color: structurize parametric curve data 2025-04-14 11:00:21 +00:00
color-operations.h color: add function to create 3x1D LUT from color curve 2025-04-10 12:43:00 +00:00
color-profile-param-builder.c color: improve code that validates color gamut 2025-04-03 17:49:53 +03:00
color-properties.c color: shorten the named of primaries 2025-06-17 10:40:03 +03:00
color-properties.h color: fix count_parameters type 2025-06-17 10:40:03 +03:00
color.c color: fine-tune pipeline printing 2025-06-17 10:40:03 +03:00
color.h color: print details of the color pipeline 2025-06-17 10:40:03 +03:00
compositor.c compositor, frontend: Allow to configure placeholder-color 2025-06-24 16:00:05 +03:00
content-protection.c cp: Correctly format debug scope for content protection 2025-06-04 17:38:16 +03:00
data-device.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
drm-formats.c drm-formats: add weston_drm_format_array_count_pairs() 2021-11-25 10:47:45 -03:00
git-version.h.meson Add Meson build system 2018-12-09 14:50:54 +02:00
id-number-allocator.c libweston: fix bitshift in weston_idalloc_get_id() 2025-03-03 14:40:21 +02:00
id-number-allocator.h libweston: add unique id generator 2024-02-13 14:08:38 -03:00
input.c input: improve keyboard keys array traversal in notify_key() 2025-06-20 20:17:37 +00:00
launcher-impl.h launcher: Remove launcher-logind 2023-09-29 09:55:32 -05:00
launcher-libseat.c launcher-libseat: Don't hard-stop on libseat-debug 2025-06-04 17:38:16 +03:00
launcher-util.c launcher: Remove launcher-logind 2023-09-29 09:55:32 -05:00
launcher-util.h launchers: Remove --tty option 2022-03-03 17:00:15 -06:00
libinput-device.c libweston: Rename LED_* to WESTON_LED* 2025-03-07 14:30:20 +00:00
libinput-device.h libinput: hook up tablet events 2023-03-31 12:10:26 +00:00
libinput-seat.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
libinput-seat.h Rename compositor.h to libweston/libweston.h 2019-04-18 12:31:46 +03:00
libweston-internal.h libweston: Remove PAINT_NODE_CONTENT_DIRTY 2025-05-28 16:46:05 +01:00
linux-dmabuf.c shared: Rename NULL and not NULL pointer assertions 2025-02-26 23:50:45 +01:00
linux-dmabuf.h linux-dmabuf: Add support for protocol version 5 2024-01-19 18:59:22 +01:00
linux-explicit-synchronization.c libweston: Advertise minor version 2 of zwp_linux_explicit_synchronization_v1 2019-08-02 15:00:08 +00:00
linux-explicit-synchronization.h libweston: Support zwp_surface_synchronization_v1.set_acquire_fence 2019-02-06 12:21:56 +00:00
linux-sync-file-uapi.h libweston: Introduce an internal linux sync file API 2019-02-06 12:21:56 +00:00
linux-sync-file.c libweston: export weston_linux_sync_file_read_timestamp() 2019-04-18 12:50:55 +03:00
linux-sync-file.h libweston: export weston_linux_sync_file_read_timestamp() 2019-04-18 12:50:55 +03:00
log.c libweston: Add weston_log_paced() 2022-11-08 08:32:26 -06:00
meson.build libweston: Vulkan renderer 2025-05-23 20:36:05 +01:00
noop-renderer.c libweston: Use explicit renderbuffer destruction 2025-01-21 14:21:40 +01:00
output-capture.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
output-capture.h drm: allow to skip composition if pending capture is writeback 2023-03-31 10:36:31 +00:00
pixel-formats.c pixel-formats: Add Sx1x software decoder formats 2025-06-17 15:07:01 +02:00
pixel-formats.h pixel-formats: Move FOURCC defines to weston-drm-fourcc.h 2025-06-23 15:03:06 +02:00
pixman-renderer.c libweston, clients, tests: implement weston_matrix in terms of weston_mat4f 2025-04-01 15:59:54 +03:00
pixman-renderer.h pixman-renderer: Remove renderbuffer_get_image() function 2025-01-21 14:34:31 +01:00
plugin-registry.c Rename plugin-registry.h to libweston/plugin-registry.h 2019-04-18 12:31:46 +03:00
renderer-borders.c libweston: move gl-borders up to weston_renderer 2025-05-18 18:00:08 +02:00
renderer-borders.h libweston: move gl-borders up to weston_renderer 2025-05-18 18:00:08 +02:00
screenshooter.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
spring-tool.c Rename compositor.h to libweston/libweston.h 2019-04-18 12:31:46 +03:00
timeline-perfetto.c timeline-perfetto: Store disambiguator globally 2025-03-06 15:14:12 +02:00
timeline.c timeline: Check for timelog scope being enabled 2025-06-04 17:38:16 +03:00
timeline.h timeline: Add the TL_POINTs into perfetto data 2025-01-24 12:22:13 +00:00
touch-calibration.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
vertex-clipping.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
vertex-clipping.h gl-renderer: Do not expose clipper_clip() in header 2024-05-30 09:09:45 +00:00
weston-direct-display.c libweston: Add weston-direct-display server side implementation 2019-11-18 19:33:09 +02:00
weston-log-file.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
weston-log-flight-rec.c Revert "shared/helpers.h: Migrate helpers.h to libweston" 2025-01-17 10:18:26 +02:00
weston-log-internal.h weston-log-wayland: make stream_destroy() use weston_log_subscriber_release() 2020-02-10 10:53:50 +00:00
weston-log-wayland.c weston-log: Add a advertised list of debug scopes 2025-06-04 17:43:33 +03:00
weston-log.c weston-log: Add a advertised list of debug scopes 2025-06-04 17:43:33 +03:00
weston-trace.h libweston: Add support for perfetto profiling 2025-01-24 12:22:13 +00:00