xserver/hw
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
..
kdrive dix: unexport AddScreen() and AddGPUScreen() 2024-03-03 23:24:28 +00:00
vfb dix: unexport AddScreen() and AddGPUScreen() 2024-03-03 23:24:28 +00:00
xfree86 Present: add PresentCapabilitySyncobj and PresentPixmapSynced 2024-04-09 06:11:03 +00:00
xnest xnest: use own dev-privates key for per-screen cursor 2024-03-12 15:24:35 +00:00
xquartz Xquartz: ProcAppleDRICreatePixmap needs to use unswapped length to send reply 2024-04-02 19:19:40 -07:00
xwayland xwayland: don't scrap pending present requests 2024-04-09 06:11:03 +00:00
xwin xwin: consolidate debugging symbols 2024-03-19 02:05:35 +00:00
meson.build Drop DMX DDX 2021-09-07 09:34:31 +00:00