xserver/hw
Erik Kurzinger d5192ba8eb xwayland: use write fence in xwl_glamor_dmabuf_import_sync_file
The functions xwl_glamor_dmabuf_import_sync_file and
xwl_glamor_dmabuf_export_sync_file are used to ensure proper
synchronization between clients using PresentPixmapSynced and
compositors that do not support the wp_linux_drm_syncobj_v1 protocol
when presenting by flipping. The acquire point's fence will be imported
as the DMA-BUF's implicit fence before handing it off to the compositor,
and then, after the DMA-BUF has been released, its new implicit fence
will be exported and become the release point's fence which the client
is expected to wait for before re-using the buffer.

Both functions currently set the flags arguments of their respective
ioctls to DMA_BUF_SYNC_READ. When importing a sync file, this means that
any subsequent implicitly synchronized reads from the buffer will not
wait for the fence, and when exporting a sync file it means that the
returned fence may be signaled before preceeding reads from the buffer
have completed.

While this is correct for xwl_glamor_dmabuf_export_sync_file since the
compositor will never write to the buffer, it is incorrect for
xwl_glamor_dmabuf_import_sync_file. To avoid corruption, we need any
reads from the buffer by the compositor to wait on the acquire point's
fence.

As a fix, instead of setting the DMA_BUF_SYNC_READ flag in
xwl_glamor_dmabuf_import_sync_file, we set the DMA_BUF_SYNC_WRITE flag.
This *does* provide the necessary guarantees.

Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1509>
2024-04-30 13:18:30 +00:00
..
kdrive include: split out non-exported prototypes to dix_priv.h 2024-04-30 00:47:38 +00:00
vfb os: unexport Os*() functions 2024-04-16 14:20:30 +02:00
xfree86 include: move private definitions out of exevents.h 2024-04-30 00:47:38 +00:00
xnest include: move private definitions out of extinit.h 2024-04-30 00:47:38 +00:00
xquartz include: move private definitions out of extinit.h 2024-04-30 00:47:38 +00:00
xwayland xwayland: use write fence in xwl_glamor_dmabuf_import_sync_file 2024-04-30 13:18:30 +00:00
xwin include: move private definitions out of extinit.h 2024-04-30 00:47:38 +00:00
meson.build Drop DMX DDX 2021-09-07 09:34:31 +00:00