diff --git a/debian/changelog b/debian/changelog index 9b20fd1..408d8ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,4 @@ -wayland-protocols (1.32-100pika1) pikauwu; urgency=medium - - * New upstream release. - - -- ferrreo Fri, 13 Jan 2023 16:04:57 +0200 - -wayland-protocols (1.32-99pika1) unstable; urgency=medium +wayland-protocols (1.32-100pika2) pikauwu; urgency=medium * New upstream release. diff --git a/patches/90.patch b/patches/90.patch new file mode 100644 index 0000000..24ab2ae --- /dev/null +++ b/patches/90.patch @@ -0,0 +1,309 @@ +From 3e5a55345bb119e9ebc7b4c2d18870b4672f3fe4 Mon Sep 17 00:00:00 2001 +From: Simon Ser +Date: Wed, 12 May 2021 12:08:24 +0200 +Subject: [PATCH 1/2] linux-drm-syncobj-v1: new protocol + +This is a new Linux explicit synchronization protocol based on DRM +synchronization objects [1]. + +[1]: https://dri.freedesktop.org/docs/drm/gpu/drm-mm.html#drm-sync-objects + +Signed-off-by: Simon Ser +--- + meson.build | 1 + + staging/linux-drm-syncobj/README | 4 + + .../linux-drm-syncobj-v1.xml | 229 ++++++++++++++++++ + 3 files changed, 234 insertions(+) + create mode 100644 staging/linux-drm-syncobj/README + create mode 100644 staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml + +diff --git a/meson.build b/meson.build +index a477e098..1a0d05d6 100644 +--- a/meson.build ++++ b/meson.build +@@ -44,6 +44,7 @@ staging_protocols = { + 'ext-idle-notify': ['v1'], + 'ext-session-lock': ['v1'], + 'fractional-scale': ['v1'], ++ 'linux-drm-syncobj': ['v1'], + 'security-context': ['v1'], + 'single-pixel-buffer': ['v1'], + 'tearing-control': ['v1'], +diff --git a/staging/linux-drm-syncobj/README b/staging/linux-drm-syncobj/README +new file mode 100644 +index 00000000..a380b314 +--- /dev/null ++++ b/staging/linux-drm-syncobj/README +@@ -0,0 +1,4 @@ ++Linux DRM syncobj protocol ++ ++Maintainers: ++Simon Ser +diff --git a/staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml b/staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml +new file mode 100644 +index 00000000..73264219 +--- /dev/null ++++ b/staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml +@@ -0,0 +1,229 @@ ++ ++ ++ ++ Copyright 2016 The Chromium Authors. ++ Copyright 2017 Intel Corporation ++ Copyright 2018 Collabora, Ltd ++ Copyright 2021 Simon Ser ++ ++ Permission is hereby granted, free of charge, to any person obtaining a ++ copy of this software and associated documentation files (the "Software"), ++ to deal in the Software without restriction, including without limitation ++ the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ and/or sell copies of the Software, and to permit persons to whom the ++ Software is furnished to do so, subject to the following conditions: ++ ++ The above copyright notice and this permission notice (including the next ++ paragraph) shall be included in all copies or substantial portions of the ++ Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ DEALINGS IN THE SOFTWARE. ++ ++ ++ ++ This protocol allows clients to request explicit synchronization for ++ buffers. It is tied to the Linux DRM synchronization object framework. ++ ++ Synchronization refers to co-ordination of pipelined operations performed ++ on buffers. Most GPU clients will schedule an asynchronous operation to ++ render to the buffer, then immediately send the buffer to the compositor ++ to be attached to a surface. ++ ++ With implicit synchronization, ensuring that the rendering operation is ++ complete before the compositor displays the buffer is an implementation ++ detail handled by either the kernel or userspace graphics driver. ++ ++ By contrast, with explicit synchronization, DRM synchronization object ++ timeline points mark when the asynchronous operations are complete. When ++ submitting a buffer, the client provides a timeline point which will be ++ waited on before the compositor accesses the buffer. The client can also ++ provide a timeline point that the compositor will signal when it no longer ++ needs to access the buffer contents for the purposes of the surface commit. ++ ++ Linux DRM synchronization objects are documented at: ++ https://dri.freedesktop.org/docs/drm/gpu/drm-mm.html#drm-sync-objects ++ ++ Warning! The protocol described in this file is currently in the testing ++ phase. Backward compatible changes may be added together with the ++ corresponding interface version bump. Backward incompatible changes can ++ only be done by creating a new major version of the extension. ++ ++ ++ ++ ++ This global is a factory interface, allowing clients to request ++ explicit synchronization for buffers on a per-surface basis. ++ ++ See wp_linux_drm_syncobj_surface_v1 for more information. ++ ++ ++ ++ ++ Destroy this explicit synchronization factory object. Other objects ++ shall not be affected by this request. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Instantiate an interface extension for the given wl_surface to provide ++ explicit synchronization. ++ ++ If the given wl_surface already has an explicit synchronization object ++ associated, the surface_exists protocol error is raised. ++ ++ Graphics APIs, like EGL or Vulkan, that manage the buffer queue and ++ commits of a wl_surface themselves, are likely to be using this ++ extension internally. If a client is using such an API for a ++ wl_surface, it should not directly use this extension on that surface, ++ to avoid raising a surface_exists protocol error. ++ ++ ++ ++ ++ ++ ++ ++ Import a DRM synchronization object timeline. ++ ++ If the FD cannot be imported, the invalid_timeline error is raised. ++ ++ ++ ++ ++ ++ ++ ++ ++ This object represents an explicit synchronization object timeline ++ imported by the client to the compositor. ++ ++ ++ ++ ++ Destroy the synchronization object timeline. Other objects are not ++ affected by this request, in particular timeline points set by ++ set_acquire_point and set_release_point are not unset. ++ ++ ++ ++ ++ ++ ++ This object is an add-on interface for wl_surface to enable explicit ++ synchronization. ++ ++ Each surface can be associated with only one object of this interface at ++ any time. ++ ++ Explicit synchronization is guaranteed to be supported for buffers ++ created with any version of the linux-dmabuf protocol and for opaque EGL ++ buffers described in EGL_WL_bind_wayland_display. Compositors are free to ++ support explicit synchronization for additional buffer types. ++ ++ As long as the wp_linux_drm_syncobj_surface_v1 object is alive, the ++ compositor may ignore implicit synchronization for buffers attached and ++ committed to the wl_surface. ++ ++ ++ ++ ++ Destroy this surface synchronization object. ++ ++ Any timeline point set by this object with set_acquire_point or ++ set_release_point since the last commit will be discarded by the ++ compositor. Any timeline point set by this object before the last ++ commit will not be affected. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Set the timeline point that must be signalled before the compositor may ++ sample from the buffer attached with wl_surface.attach. ++ ++ The 64-bit unsigned value combined from point_hi and point_lo is the ++ point value. ++ ++ The acquire point is double-buffered state, and will be applied on the ++ next wl_surface.commit request for the associated surface. Thus, it ++ applies only to the buffer that is attached to the surface at commit ++ time. ++ ++ If an acquire point has already been attached during the same commit ++ cycle, the new point replaces the old one. ++ ++ If the associated wl_surface was destroyed, a no_surface error is ++ raised. ++ ++ If at surface commit time the attached buffer does not support explicit ++ synchronization, an unsupported_buffer error is raised. ++ ++ If at surface commit time there is no buffer attached, a no_buffer ++ error is raised. ++ ++ ++ ++ ++ ++ ++ ++ ++ Set the timeline point that must be signalled by the compositor when it ++ has finished its usage of the buffer attached with wl_surface.attach ++ for the relevant commit. ++ ++ Once the timeline point is signaled, and assuming the associated buffer ++ is not pending release from other wl_surface.commit requests on other ++ surfaces, no additional explicit or implicit synchronization is ++ required to safely re-use the buffer. ++ ++ The 64-bit unsigned value combined from point_hi and point_lo is the ++ point value. ++ ++ The release point is double-buffered state, and will be applied on the ++ next wl_surface.commit request for the associated surface. Thus, it ++ applies only to the buffer that is attached to the surface at commit ++ time. ++ ++ If a release point has already been attached during the same commit ++ cycle, the new point replaces the old one. ++ ++ If the associated wl_surface was destroyed, a no_surface error is ++ raised. ++ ++ If at surface commit time the attached buffer does not support explicit ++ synchronization, an unsupported_buffer error is raised. ++ ++ If at surface commit time there is no buffer attached, a no_buffer ++ error is raised. ++ ++ ++ ++ ++ ++ ++ +-- +GitLab + + +From ec4e780899b53b771a5b1129e8d9d8a0a5ea932e Mon Sep 17 00:00:00 2001 +From: Simon Ser +Date: Mon, 16 Oct 2023 10:47:28 +0200 +Subject: [PATCH 2/2] linux-explicit-synchronization-v1: add linux-drm-syncobj + note + +The new protocol supersedes this one. + +Signed-off-by: Simon Ser +--- + .../linux-explicit-synchronization-unstable-v1.xml | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml b/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml +index ac916418..35a97353 100644 +--- a/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml ++++ b/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml +@@ -36,6 +36,8 @@ + This interface is derived from Chromium's + zcr_linux_explicit_synchronization_v1. + ++ Note: this protocol is superseded by linux-drm-syncobj. ++ + Warning! The protocol described in this file is experimental and + backward incompatible changes may be made. Backward compatible changes + may be added together with the corresponding interface version bump. +-- +GitLab + diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..f9012c1 --- /dev/null +++ b/patches/series @@ -0,0 +1 @@ +90.patch \ No newline at end of file