xserver/hw/xwayland
Erik Kurzinger e1f16fb1ac xwayland: don't scrap pending present requests
When a present request is received, Xwayland will check if there is an
existing request targeting the same window and msc and scrap the older
request if so. Alas, this does not interact well the older fence-based
or newer syncobj-based synchronization features of the Present
extension.

Since execution of a request may be delayed for an unknown length of
time while waiting for a fence to be signaled, the target msc computed
upon receiving a request may not match the actual msc at which the
request is executed. Therefore, we cannot determine in advance whether a
more recently received request will make an older request redundant.

This change removes the code to scrap pending present requests.

We must also ensure requests are executed in the correct order even if
their fences are signaled out of order. To achieve this, whenever
execution of a request needs to wait for a fence, execution of any
later-received requests will be blocked until the earlier request is
ready. The blocked requests will be added to a list tracked in the
xwl_present_window struct. Once the earlier request's fence is signaled,
any blocked requests will be re-executed.

Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/967>
2024-04-09 06:11:03 +00:00
..
desktop xwayland: Use "-decorate" if available 2024-03-18 23:19:59 +00:00
man xwayland: Update the global screen scale 2024-03-20 09:05:36 +01:00
.gitignore xwayland: Add wp_viewport wayland extension support 2019-10-12 12:19:14 +02:00
drm.xml wayland: Sync drm.xml with Mesa 2017-07-05 10:13:04 -04:00
meson.build xwayland: add support for wp_linux_drm_syncobj_v1 2024-04-09 06:11:03 +00:00
xwayland-cursor.c xwayland: Account for the scale factor 2024-03-20 09:05:36 +01:00
xwayland-cursor.h xwayland: Add xwl_cursor_clear_frame_cb() 2021-10-25 12:05:42 +00:00
xwayland-cvt.c xwayland: Keep the CVT timings for non-standard modes 2023-05-15 10:33:21 +02:00
xwayland-cvt.h xwayland: Move Xwayland CVT declaration 2019-12-20 16:19:01 +01:00
xwayland-dmabuf.c xwayland/glamor: Drop xwl_screen_get_main_dev() 2024-03-18 15:41:18 +00:00
xwayland-dmabuf.h xwayland: Move dmabuf code to its own source file 2024-03-14 15:00:46 +01:00
xwayland-drm-lease.c randr: move private definitons from randrstr.h to randrstr_priv.h 2024-02-22 23:47:49 +00:00
xwayland-drm-lease.h Xwayland: implement drm-lease-v1 2021-12-07 10:02:29 +00:00
xwayland-glamor-gbm.c xwayland: add support for wp_linux_drm_syncobj_v1 2024-04-09 06:11:03 +00:00
xwayland-glamor-gbm.h xwayland/glamor: Make xwl_glamor_init_gbm() return its status 2024-03-18 15:41:17 +00:00
xwayland-glamor-xv.c xwayland: Cleanup and remove `xwayland.h` 2019-12-20 16:19:01 +01:00
xwayland-glamor.c xwayland: add support for wp_linux_drm_syncobj_v1 2024-04-09 06:11:03 +00:00
xwayland-glamor.h xwayland: add support for wp_linux_drm_syncobj_v1 2024-04-09 06:11:03 +00:00
xwayland-input.c xwayland: Apply the viewport's scale_x/y to all input 2024-03-20 09:05:36 +01:00
xwayland-input.h xwayland: Move the leave kbd/ptr code 2024-03-18 23:34:29 +00:00
xwayland-output.c xwayland: Keep track of outputs per window 2024-03-20 09:05:36 +01:00
xwayland-output.h xwayland: Track output scales 2024-03-20 09:05:36 +01:00
xwayland-pixmap.c xwayland: Add xwl_pixmap_get_wl_buffer helper 2024-01-22 14:14:05 +00:00
xwayland-pixmap.h xwayland: Replace window pixmap as needed for drawing operation 2024-03-06 17:12:54 +01:00
xwayland-present.c xwayland: don't scrap pending present requests 2024-04-09 06:11:03 +00:00
xwayland-present.h xwayland: don't scrap pending present requests 2024-04-09 06:11:03 +00:00
xwayland-screen.c xwayland: Add helper function for fractional scaling 2024-03-20 09:05:36 +01:00
xwayland-screen.h xwayland: add support for wp_linux_drm_syncobj_v1 2024-04-09 06:11:03 +00:00
xwayland-shm.c os: move os_move_fd() out of public API 2024-03-09 17:12:46 +00:00
xwayland-shm.h xwayland: Move SHM declarations to their own header 2019-12-20 16:19:01 +01:00
xwayland-types.h xwayland/glamor: Remove the xwl_egl_backend structure 2024-03-18 15:41:18 +00:00
xwayland-vidmode.c xwayland: add a fixed geometry size for rootful 2022-06-30 17:52:22 +02:00
xwayland-vidmode.h xwayland: Move Xwayland vidmode declaration 2019-12-20 16:19:01 +01:00
xwayland-window-buffers.c xwayland: add support for wp_linux_drm_syncobj_v1 2024-04-09 06:11:03 +00:00
xwayland-window-buffers.h xwayland: Drop xwl_window_buffers_get_pixmap() 2024-03-18 15:41:18 +00:00
xwayland-window.c xwayland: add support for wp_linux_drm_syncobj_v1 2024-04-09 06:11:03 +00:00
xwayland-window.h xwayland: add support for wp_linux_drm_syncobj_v1 2024-04-09 06:11:03 +00:00
xwayland-xtest.c xwayland: fix missing include of <errno.h> 2024-03-21 17:32:30 +01:00
xwayland-xtest.h xwayland: Fallback to plain XTEST if EI does not work 2023-06-26 13:19:19 +02:00
xwayland.c xwayland: Update the global screen scale 2024-03-20 09:05:36 +01:00