chore: Add spec files for Nvidia patched Xwayland

This commit is contained in:
Kyle Gospodnetich 2023-12-12 23:27:33 -08:00
parent 73edf0e2ec
commit 02363c8572
7 changed files with 3675 additions and 0 deletions

View File

@ -0,0 +1,257 @@
diff --git a/meson.build b/meson.build
index ab55c7f..a0ea1f3 100644
--- a/meson.build
+++ b/meson.build
@@ -44,6 +44,7 @@
'ext-session-lock': ['v1'],
'fractional-scale': ['v1'],
'security-context': ['v1'],
+ 'linux-drm-syncobj': ['v1'],
'single-pixel-buffer': ['v1'],
'tearing-control': ['v1'],
'xdg-activation': ['v1'],
diff --git a/staging/linux-drm-syncobj/README b/staging/linux-drm-syncobj/README
new file mode 100644
index 0000000..a380b31
--- /dev/null
+++ b/staging/linux-drm-syncobj/README
@@ -0,0 +1,4 @@
+Linux DRM syncobj protocol
+
+Maintainers:
+Simon Ser <contact@emersion.fr>
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 0000000..7326421
--- /dev/null
+++ b/staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="linux_drm_syncobj_v1">
+ <copyright>
+ 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.
+ </copyright>
+
+ <description summary="protocol for providing explicit synchronization">
+ 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.
+ </description>
+
+ <interface name="wp_linux_drm_syncobj_v1" version="1">
+ <description summary="global for providing explicit synchronization">
+ 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.
+ </description>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy explicit synchronization factory object">
+ Destroy this explicit synchronization factory object. Other objects
+ shall not be affected by this request.
+ </description>
+ </request>
+
+ <enum name="error">
+ <entry name="surface_exists" value="0"
+ summary="the surface already has a synchronization object associated"/>
+ <entry name="invalid_timeline" value="1"
+ summary="the timeline object could not be imported"/>
+ </enum>
+
+ <request name="get_surface">
+ <description summary="extend surface interface for explicit synchronization">
+ 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.
+ </description>
+ <arg name="id" type="new_id" interface="wp_linux_drm_syncobj_surface_v1"
+ summary="the new synchronization surface object id"/>
+ <arg name="surface" type="object" interface="wl_surface"
+ summary="the surface"/>
+ </request>
+
+ <request name="import_timeline">
+ <description summary="import a DRM syncobj timeline">
+ Import a DRM synchronization object timeline.
+
+ If the FD cannot be imported, the invalid_timeline error is raised.
+ </description>
+ <arg name="id" type="new_id" interface="wp_linux_drm_syncobj_timeline_v1"/>
+ <arg name="fd" type="fd" summary="drm_syncobj file descriptor"/>
+ </request>
+ </interface>
+
+ <interface name="wp_linux_drm_syncobj_timeline_v1" version="1">
+ <description summary="synchronization object timeline">
+ This object represents an explicit synchronization object timeline
+ imported by the client to the compositor.
+ </description>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy the timeline">
+ 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.
+ </description>
+ </request>
+ </interface>
+
+ <interface name="wp_linux_drm_syncobj_surface_v1" version="1">
+ <description summary="per-surface explicit synchronization">
+ 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.
+ </description>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy the surface synchronization object">
+ 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.
+ </description>
+ </request>
+
+ <enum name="error">
+ <entry name="no_surface" value="1"
+ summary="the associated wl_surface was destroyed"/>
+ <entry name="unsupported_buffer" value="2"
+ summary="the buffer does not support explicit synchronization"/>
+ <entry name="no_buffer" value="3" summary="no buffer was attached"/>
+ </enum>
+
+ <request name="set_acquire_point">
+ <description summary="set the acquire timeline point">
+ 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.
+ </description>
+ <arg name="timeline" type="object" interface="wp_linux_drm_syncobj_timeline_v1"/>
+ <arg name="point_hi" type="uint" summary="high 32 bits of the point value"/>
+ <arg name="point_lo" type="uint" summary="low 32 bits of the point value"/>
+ </request>
+
+ <request name="set_release_point">
+ <description summary="set the release timeline point">
+ 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.
+ </description>
+ <arg name="timeline" type="object" interface="wp_linux_drm_syncobj_timeline_v1"/>
+ <arg name="point_hi" type="uint" summary="high 32 bits of the point value"/>
+ <arg name="point_lo" type="uint" summary="low 32 bits of the point value"/>
+ </request>
+ </interface>
+</protocol>

View File

@ -0,0 +1,198 @@
Name: wayland-protocols
%global wayland_version 1.32
Version: %{wayland_version}.vrr.1
Release: 2%{?dist}
Summary: Wayland protocols that adds functionality not available in the core protocol
License: MIT
URL: https://wayland.freedesktop.org/
Source0: https://gitlab.freedesktop.org/wayland/%{name}/-/releases/%{wayland_version}/downloads/%{name}-%{wayland_version}.tar.xz
# needed for nvidia on wayland
# https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/90
Patch0: 90.patch
BuildArch: noarch
BuildRequires: gcc
BuildRequires: gcc-g++
BuildRequires: meson
BuildRequires: wayland-devel
%description
wayland-protocols contains Wayland protocols that adds functionality not
available in the Wayland core protocol. Such protocols either adds
completely new functionality, or extends the functionality of some other
protocol either in Wayland core, or some other protocol in
wayland-protocols.
%package devel
Summary: Wayland protocols that adds functionality not available in the core protocol
%description devel
wayland-protocols contains Wayland protocols that adds functionality not
available in the Wayland core protocol. Such protocols either adds
completely new functionality, or extends the functionality of some other
protocol either in Wayland core, or some other protocol in
wayland-protocols.
%prep
%autosetup -n %{name}-%{wayland_version}
mkdir -p staging/linux-drm-syncobj/
mv README staging/linux-drm-syncobj/
mv linux-drm-syncobj-v1.xml staging/linux-drm-syncobj/
%build
%meson
%meson_build
%install
%meson_install
%files devel
%license COPYING
%doc README.md
%{_datadir}/pkgconfig/%{name}.pc
%{_datadir}/%{name}/
%changelog
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.31-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Nov 29 2022 Kalev Lember <klember@redhat.com> - 1.31-1
- Update to 1.31
* Mon Nov 21 2022 Kalev Lember <klember@redhat.com> - 1.30-1
- Update to 1.30
* Tue Nov 15 2022 Kalev Lember <klember@redhat.com> - 1.29-1
- Update to 1.29
* Sat Nov 05 2022 Kalev Lember <klember@redhat.com> - 1.28-1
- Update to 1.28
* Wed Oct 12 2022 Neal Gompa <ngompa@fedoraproject.org> - 1.27-1
- Update to 1.27
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.26-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri Jul 8 2022 Olivier Fourdan <ofourdan@redhat.com> - 1.26-1
- Update to 1.26
* Sat Feb 19 2022 Neal Gompa <ngompa@fedoraproject.org> - 1.25-1
- Update to 1.25
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.24-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Sat Nov 27 2021 Neal Gompa <ngompa@fedoraproject.org> - 1.24-1
- Update to 1.24
* Mon Sep 20 2021 Neal Gompa <ngompa@fedoraproject.org> - 1.23-1
- Update to 1.23
* Mon Sep 20 2021 Neal Gompa <ngompa@fedoraproject.org> - 1.22-1
- Update to 1.22
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.21-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue May 04 2021 Kalev Lember <klember@redhat.com> - 1.21-1
- Update to 1.21
- Switch to meson build system
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.20-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.20-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sat Feb 29 2020 Jonas Ådahl <jadahl@redhat.com> - 1.20-1
- Update to 1.20
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.18-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Jul 29 2019 Olivier Fourdan <ofourdan@redhat.com> - 1.18-1
- Update to 1.18
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.17-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.17-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Nov 21 2018 Kalev Lember <klember@redhat.com> - 1.17-1
- Update to 1.17
* Tue Jul 31 2018 Kalev Lember <klember@redhat.com> - 1.16-1
- Update to 1.16
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.15-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu Jul 05 2018 Adam Jackson <ajax@redhat.com> - 1.15-1
- Update to 1.15
* Tue May 08 2018 Kalev Lember <klember@redhat.com> - 1.14-1
- Update to 1.14
* Thu Feb 15 2018 Kalev Lember <klember@redhat.com> - 1.13-1
- Update to 1.13
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.12-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Dec 07 2017 Kalev Lember <klember@redhat.com> - 1.12-1
- Update to 1.12
* Wed Nov 15 2017 Kalev Lember <klember@redhat.com> - 1.11-1
- Update to 1.11
* Mon Jul 31 2017 Kalev Lember <klember@redhat.com> - 1.10-1
- Update to 1.10
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.9-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Wed Jul 19 2017 Kalev Lember <klember@redhat.com> - 1.9-1
- Update to 1.9
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Tue Aug 16 2016 Kalev Lember <klember@redhat.com> - 1.7-1
- Update to 1.7
* Fri Aug 12 2016 Kalev Lember <klember@redhat.com> - 1.6-1
- Update to 1.6
* Tue Jul 26 2016 Kalev Lember <klember@redhat.com> - 1.5-1
- Update to 1.5
* Tue May 24 2016 Kalev Lember <klember@redhat.com> - 1.4-1
- Update to 1.4
* Mon Apr 11 2016 Kalev Lember <klember@redhat.com> - 1.3-1
- Update to 1.3
* Mon Mar 07 2016 Kalev Lember <klember@redhat.com> - 1.2-1
- Update to 1.2
* Thu Feb 18 2016 Kalev Lember <klember@redhat.com> - 1.1-1
- Update to 1.1
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Sat Dec 05 2015 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 1.0-2
- Fix description
* Thu Nov 26 2015 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 1.0-1
- Update to released 1.0
- Move XMLs to devel pkg
- Drop non-interesting part of description
* Sun Nov 22 2015 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 0.1.0-0.gitf828a43
- Initial package

View File

@ -0,0 +1,387 @@
From 1a25782bd57e4a4d4329eae138c136be7c6f0532 Mon Sep 17 00:00:00 2001
From: Erik Kurzinger <ekurzinger@nvidia.com>
Date: Tue, 16 Aug 2022 11:54:48 -0700
Subject: [PATCH 1/2] DRI3: add DRI3ImportSyncobj and DRI3FreeSyncobj
Adds new protocol to the DRI3 extension for importing DRM
synchronization objects provided by clients. These can be used to enable
explicit synchronization between the client, the direct rendering
device, and the server.
Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
---
dri3proto.pc.in | 2 +-
dri3proto.txt | 52 ++++++++++++++++++++++++++++--
include/X11/extensions/dri3proto.h | 28 ++++++++++++++--
3 files changed, 77 insertions(+), 5 deletions(-)
diff --git a/dri3proto.pc.in b/dri3proto.pc.in
index 7725bc5..be6ccb9 100644
--- a/dri3proto.pc.in
+++ b/dri3proto.pc.in
@@ -3,5 +3,5 @@ includedir=@includedir@
Name: DRI3Proto
Description: DRI3 extension headers
-Version: 1.3
+Version: 1.4
Cflags: -I${includedir}
diff --git a/dri3proto.txt b/dri3proto.txt
index 3f92756..07d1152 100644
--- a/dri3proto.txt
+++ b/dri3proto.txt
@@ -1,5 +1,5 @@
The DRI3 Extension
- Version 1.3
+ Version 1.4
2021-11-30
Keith Packard
@@ -60,7 +60,7 @@ DRI3 defines no events.
6. Protocol Types
-DRI3 defines no new protocol types.
+SYNCOBJ { XID }
❄ ❄ ❄ ❄ ❄ ❄ ❄
@@ -395,6 +395,36 @@ The name of this extension is "DRI3"
If the window specified was not found, a Window error will
be returned.
+
+┌───
+ DRI3ImportSyncobj
+ syncobj: SYNCOBJ
+ drawable: DRAWABLE
+ fd: FD
+└───
+ Errors: IDchoice, Drawable
+
+ Imports the DRM synchronization object bound to the given 'fd'. This
+ may then be used to enable explicit synchronization with the the
+ server-side direct rendering device associated with 'drawable'.
+
+ The provided syncobj must be a timeline syncobj.
+
+ If 'drawable' is not found, a Drawable error will be returned.
+
+
+┌───
+ DRI3FreeSyncobj
+ syncobj: SYNCOBJ
+└───
+ Errors: Value
+
+ Indicates that any resources associated with the given 'syncobj' should
+ be released by the server. The actual release may be deferred until any
+ pending operations that depend on the object have completed.
+
+ If 'syncobj' is not found, a Value error will be returned.
+
❄ ❄ ❄ ❄ ❄ ❄ ❄
9. Extension Events
@@ -703,6 +733,24 @@ A.2 Protocol Requests
4 CARD32 drmMinor
└───
+┌───
+ DRI3ImportSyncobj
+ 1 CARD8 major opcode
+ 1 11 DRI3 opcode
+ 2 3 length
+ 4 SYNCOBJ syncobj
+ 4 Drawable drawable
+ 0 FD syncobj fd
+└───
+
+┌───
+ DRI3FreeSyncobj
+ 1 CARD8 major opcode
+ 1 12 DRI3 opcode
+ 2 2 length
+ 4 SYNCOBJ syncobj
+└───
+
A.3 Protocol Events
The DRI3 extension defines no events.
diff --git a/include/X11/extensions/dri3proto.h b/include/X11/extensions/dri3proto.h
index 9cba105..d941860 100644
--- a/include/X11/extensions/dri3proto.h
+++ b/include/X11/extensions/dri3proto.h
@@ -25,7 +25,7 @@
#define DRI3_NAME "DRI3"
#define DRI3_MAJOR 1
-#define DRI3_MINOR 3
+#define DRI3_MINOR 4
#define DRI3NumberErrors 0
#define DRI3NumberEvents 0
@@ -45,7 +45,13 @@
/* v1.3 */
#define xDRI3SetDRMDeviceInUse 9
-#define DRI3NumberRequests 10
+/* v1.4 */
+#define xDRI3ImportSyncobj 10
+#define xDRI3FreeSyncobj 11
+
+#define DRI3NumberRequests 12
+
+#define DRI3Syncobj CARD32
typedef struct {
CARD8 reqType;
@@ -261,4 +267,22 @@ typedef struct {
} xDRI3SetDRMDeviceInUseReq;
#define sz_xDRI3SetDRMDeviceInUseReq 16
+/* v1.4 */
+typedef struct {
+ CARD8 reqType;
+ CARD8 dri3ReqType;
+ CARD16 length;
+ DRI3Syncobj syncobj;
+ CARD32 drawable;
+} xDRI3ImportSyncobjReq;
+#define sz_xDRI3ImportSyncobjReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 dri3ReqType;
+ CARD16 length;
+ DRI3Syncobj syncobj;
+} xDRI3FreeSyncobjReq;
+#define sz_xDRI3FreeSyncobjReq 8
+
#endif
--
GitLab
From 08c729e70b565508f36ad0df086b13b8bb6b0813 Mon Sep 17 00:00:00 2001
From: Erik Kurzinger <ekurzinger@nvidia.com>
Date: Tue, 16 Aug 2022 11:55:43 -0700
Subject: [PATCH 2/2] Present: add PresentPixmapSynced
Adds an augmented version of PresentPixmap supporting explicit
synchronization with a direct rendering device. This takes the form of a
timeline DRM synchronization object, along with acquire and release
points on that timeline. Implementations advertising
PresentCapabilitySyncobj will wait for the acquire point to be signaled
before executing the PresentPixmap request, and signal the release point
after any GPU operations on the pixmap have completed.
Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
---
include/X11/extensions/presentproto.h | 32 +++++++++
include/X11/extensions/presenttokens.h | 7 +-
presentproto.txt | 89 +++++++++++++++++++++++++-
3 files changed, 124 insertions(+), 4 deletions(-)
diff --git a/include/X11/extensions/presentproto.h b/include/X11/extensions/presentproto.h
index d8dc6d2..ea80863 100644
--- a/include/X11/extensions/presentproto.h
+++ b/include/X11/extensions/presentproto.h
@@ -24,6 +24,7 @@
#define _PRESENT_PROTO_H_
#include <X11/extensions/presenttokens.h>
+#include <X11/extensions/dri3proto.h>
#define Window CARD32
#define Pixmap CARD32
@@ -136,6 +137,37 @@ typedef struct {
} xPresentQueryCapabilitiesReply;
#define sz_xPresentQueryCapabilitiesReply 32
+typedef struct {
+ CARD8 reqType;
+ CARD8 presentReqType;
+ CARD16 length;
+ Window window;
+
+ Pixmap pixmap;
+ CARD32 serial;
+
+ Region valid;
+ Region update;
+
+ INT16 x_off;
+ INT16 y_off;
+ CARD32 target_crtc;
+
+ DRI3Syncobj acquire_syncobj;
+ DRI3Syncobj release_syncobj;
+ CARD64 acquire_point;
+ CARD64 release_point;
+
+ CARD32 options;
+ CARD32 pad1;
+
+ CARD64 target_msc;
+ CARD64 divisor;
+ CARD64 remainder;
+ /* followed by a LISTofPRESENTNOTIFY */
+} xPresentPixmapSyncedReq;
+#define sz_xPresentPixmapSyncedReq 88
+
/*
* Events
*
diff --git a/include/X11/extensions/presenttokens.h b/include/X11/extensions/presenttokens.h
index 400e84d..fae10fd 100644
--- a/include/X11/extensions/presenttokens.h
+++ b/include/X11/extensions/presenttokens.h
@@ -36,8 +36,9 @@
#define X_PresentNotifyMSC 2
#define X_PresentSelectInput 3
#define X_PresentQueryCapabilities 4
+#define X_PresentPixmapSynced 5
-#define PresentNumberRequests 5
+#define PresentNumberRequests 6
/* Present operation options */
#define PresentOptionNone 0
@@ -62,11 +63,13 @@
#define PresentCapabilityFence 2
#define PresentCapabilityUST 4
#define PresentCapabilityAsyncMayTear 8
+#define PresentCapabilitySyncobj 16
#define PresentAllCapabilities (PresentCapabilityAsync | \
PresentCapabilityFence | \
PresentCapabilityUST | \
- PresentCapabilityAsyncMayTear)
+ PresentCapabilityAsyncMayTear | \
+ PresentCapabilitySyncobj)
#define PresentAllAsyncCapabilities (PresentCapabilityAsync | PresentCapabilityAsyncMayTear)
diff --git a/presentproto.txt b/presentproto.txt
index b474093..c2f717e 100644
--- a/presentproto.txt
+++ b/presentproto.txt
@@ -1,5 +1,5 @@
The Present Extension
- Version 1.3
+ Version 1.4
2023-06-13
Keith Packard
@@ -63,7 +63,8 @@ PRESENTOPTION { PresentOptionAsync,
PRESENTCAPABILITY { PresentCapabilityAsync,
PresentCapabilityFence,
PresentCapabilityUST,
- PresentCapabilityAsyncMayTear }
+ PresentCapabilityAsyncMayTear,
+ PresentCapabilitySyncobj }
PRESENTCOMPLETEKIND { PresentCompleteKindPixmap,
PresentCompleteKindMSCNotify }
@@ -359,6 +360,65 @@ The name of this extension is "Present"
defined by the extension, but is expected to be on the order
of milliseconds or less.
+ PresentCapabilitySyncobj means that the target device supports
+ explicit synchronization using timeline DRM synchronization
+ objects. See the PresentPixmapSynced request for details.
+
+┌───
+ PresentPixmapSynced
+ window: WINDOW
+ pixmap: PIXMAP
+ serial: CARD32
+ valid-area: REGION or None
+ update-area: REGION or None
+ x-off, y-off: INT16
+ target-crtc: CRTC or None
+ acquire-syncobj: SYNCOBJ or None
+ release-syncobj: SYNCOBJ or None
+ acquire-point: CARD64
+ release-point: CARD64
+ options: SETofPRESENTOPTION
+ target-msc: CARD64
+ divisor: CARD64
+ remainder: CARD64
+ notifies: LISTofPRESENTNOTIFY
+└───
+ Errors: Window, Pixmap, Match, Value
+
+ Identical to the PresentPixmap request, except that instead of the
+ 'wait-fence' and 'idle-fence' arguments it accepts mandatory
+ 'acquire-syncobj' and 'release-syncobj' arguments, along with
+ corresponding acquire and release points, to be used for explicit
+ timeline-based GPU synchronization. The 'acquire-point' and
+ 'release-point' are assumed to correspond to timeline points on the
+ respective DRM syncobjs.
+
+ The contents of the Pixmap will not be accessed by the server until the
+ 'acquire-point' on the acquire timeline has been signaled by the
+ client. The fence need not be submitted at the time the
+ PresentPixmapSynced request is issued.
+
+ Once the 'release-point' on the release timeline has been signaled, the
+ client may assume that no further GPU or CPU access to the Pixmap by
+ the server will occur as part of the originating PresentPixmapSynced
+ request. Note that this is a stronger guarantee than what is provided
+ by the 'idle-fence' argument of the PresentPixmap request or the
+ delivery of a PresentIdleNotify event, as those do not necessarily
+ imply that the Pixmap is idle on the GPU.
+
+ The server may wait for the acquire point and signal the release point
+ itself, as will typically happen if the request is executed by copying
+ the Pixmap's contents. Alternatively, it may forward the timelines,
+ acquire, and release points to an output sink directly, provided that
+ sink also supports explicit synchronization using DRM syncobjs.
+
+ If the server does not support PresentCapabilitySyncobj, a Value error
+ is generated.
+
+ If either 'acquire-syncobj' or 'release-syncobj' are None or do not
+ refer to previously imported syncobjs or 'acquire-point' or
+ 'release-point' is zero, a Value error is generated.
+
7.1 Requests proposed for a later Present extension version
@@ -729,6 +789,31 @@ A.2 Protocol Requests
4 SETofPRESENTCAPABILITY capabilities
└───
+┌───
+ PresentPixmapSynced
+ 1 CARD8 major opcode
+ 1 5 Present opcode
+ 2 22+2n length
+ 4 Window window
+ 4 Pixmap pixmap
+ 4 CARD32 serial
+ 4 Region valid-area
+ 4 Region update-area
+ 2 INT16 x-off
+ 2 INT16 y-off
+ 4 CRTC target-crtc
+ 4 SYNCOBJ acquire-syncobj
+ 4 SYNCOBJ release-syncobj
+ 8 CARD64 acquire-point
+ 8 CARD64 release-point
+ 4 CARD32 options
+ 4 unused
+ 8 CARD64 target-msc
+ 8 CARD64 divisor
+ 8 CARD64 remainder
+ 8n LISTofPresentNotify notifies
+└───
+
A.3 Protocol Events
┌───
--
GitLab

View File

@ -0,0 +1,31 @@
#!/bin/sh
proto=$1
branch=$2
if [ -z "$proto" ]; then
echo "Usage: $0 <proto name> [<branch>]"
exit 1
fi
dirname=$proto-$( date +%Y%m%d )
rm -rf $dirname
git clone git://git.freedesktop.org/git/xorg/proto/$proto $dirname
cd $dirname
if [ -z "$branch" ]; then
git log | head -1
else
git checkout $branch
fi
sha=`git rev-list --max-count=1 --abbrev-commit HEAD`
git repack -a -d
cd ..
# append sha to dirname
mv $dirname $dirname-git$sha
dirname=$dirname-git$sha
tarball=$dirname.tar.bz2
tar jcf $tarball $dirname
rm -rf $dirname
echo "$tarball is now available"

View File

@ -0,0 +1,401 @@
%global debug_package %{nil}
# When releasing a xorg-x11-proto-devel version with updated keysyms,
# rebuild libX11
Summary: X.Org X11 Protocol headers
Name: xorg-x11-proto-devel
%global xorg_version 2023.2
Version: %{xorg_version}.vrr.1
Release: 2%{?dist}
License: MIT
URL: https://www.x.org
BuildArch: noarch
Source0: https://www.x.org/pub/individual/proto/xorgproto-%{xorg_version}.tar.xz
Source40: make-git-snapshot.sh
# https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/59
Patch0: 59.patch
BuildRequires: gcc
BuildRequires: pkgconfig
BuildRequires: meson
%description
X.Org X11 Protocol headers
%prep
%autosetup -p1 -n xorgproto-%{xorg_version}
%build
%meson
%meson_build
%install
%meson_install
# trim some fat
for i in apple windows trap ; do
rm -f $RPM_BUILD_ROOT%{_includedir}/X11/extensions/*${i}*
rm -f $RPM_BUILD_ROOT%{_datadir}/pkgconfig/*${i}*
done
# keep things building even if you have the html doc tools for xmlto installed
rm -f $RPM_BUILD_ROOT%{_docdir}/*/*.{html,svg}
%files
%doc COPYING-*
%doc *.txt
%dir %{_includedir}/GL
%{_includedir}/GL/glxint.h
%{_includedir}/GL/glxmd.h
%{_includedir}/GL/glxproto.h
%{_includedir}/GL/glxtokens.h
%dir %{_includedir}/GL/internal
%{_includedir}/GL/internal/glcore.h
%dir %{_includedir}/X11
%{_includedir}/X11/DECkeysym.h
%{_includedir}/X11/HPkeysym.h
%{_includedir}/X11/Sunkeysym.h
%{_includedir}/X11/X.h
%{_includedir}/X11/XF86keysym.h
%{_includedir}/X11/XWDFile.h
%{_includedir}/X11/Xalloca.h
%{_includedir}/X11/Xarch.h
%{_includedir}/X11/Xatom.h
%{_includedir}/X11/Xdefs.h
%{_includedir}/X11/Xfuncproto.h
%{_includedir}/X11/Xfuncs.h
%{_includedir}/X11/Xmd.h
%{_includedir}/X11/Xos.h
%{_includedir}/X11/Xos_r.h
%{_includedir}/X11/Xosdefs.h
%{_includedir}/X11/Xpoll.h
%{_includedir}/X11/Xproto.h
%{_includedir}/X11/Xprotostr.h
%{_includedir}/X11/Xthreads.h
%{_includedir}/X11/Xw32defs.h
%{_includedir}/X11/Xwindows.h
%{_includedir}/X11/Xwinsock.h
%{_includedir}/X11/ap_keysym.h
%dir %{_includedir}/X11/dri
%{_includedir}/X11/dri/xf86dri.h
%{_includedir}/X11/dri/xf86driproto.h
%{_includedir}/X11/dri/xf86dristr.h
%dir %{_includedir}/X11/extensions
%{_includedir}/X11/extensions/EVI.h
%{_includedir}/X11/extensions/EVIproto.h
%{_includedir}/X11/extensions/XI.h
%{_includedir}/X11/extensions/XI2.h
%{_includedir}/X11/extensions/XI2proto.h
%{_includedir}/X11/extensions/XIproto.h
%{_includedir}/X11/extensions/XKB.h
%{_includedir}/X11/extensions/XKBproto.h
%{_includedir}/X11/extensions/XKBsrv.h
%{_includedir}/X11/extensions/XKBstr.h
%{_includedir}/X11/extensions/XResproto.h
%{_includedir}/X11/extensions/Xv.h
%{_includedir}/X11/extensions/XvMC.h
%{_includedir}/X11/extensions/XvMCproto.h
%{_includedir}/X11/extensions/Xvproto.h
%{_includedir}/X11/extensions/ag.h
%{_includedir}/X11/extensions/agproto.h
%{_includedir}/X11/extensions/bigreqsproto.h
%{_includedir}/X11/extensions/bigreqstr.h
%{_includedir}/X11/extensions/composite.h
%{_includedir}/X11/extensions/compositeproto.h
%{_includedir}/X11/extensions/cup.h
%{_includedir}/X11/extensions/cupproto.h
%{_includedir}/X11/extensions/damageproto.h
%{_includedir}/X11/extensions/damagewire.h
%{_includedir}/X11/extensions/dbe.h
%{_includedir}/X11/extensions/dbeproto.h
%{_includedir}/X11/extensions/dmx.h
%{_includedir}/X11/extensions/dmxproto.h
%{_includedir}/X11/extensions/dpmsconst.h
%{_includedir}/X11/extensions/dpmsproto.h
%{_includedir}/X11/extensions/dri2proto.h
%{_includedir}/X11/extensions/dri2tokens.h
%{_includedir}/X11/extensions/dri3proto.h
%{_includedir}/X11/extensions/ge.h
%{_includedir}/X11/extensions/geproto.h
%{_includedir}/X11/extensions/lbx.h
%{_includedir}/X11/extensions/lbxproto.h
%{_includedir}/X11/extensions/mitmiscconst.h
%{_includedir}/X11/extensions/mitmiscproto.h
%{_includedir}/X11/extensions/multibufconst.h
%{_includedir}/X11/extensions/multibufproto.h
%{_includedir}/X11/extensions/panoramiXproto.h
%{_includedir}/X11/extensions/presentproto.h
%{_includedir}/X11/extensions/presenttokens.h
%{_includedir}/X11/extensions/randr.h
%{_includedir}/X11/extensions/randrproto.h
%{_includedir}/X11/extensions/recordconst.h
%{_includedir}/X11/extensions/recordproto.h
%{_includedir}/X11/extensions/recordstr.h
%{_includedir}/X11/extensions/render.h
%{_includedir}/X11/extensions/renderproto.h
%{_includedir}/X11/extensions/saver.h
%{_includedir}/X11/extensions/saverproto.h
%{_includedir}/X11/extensions/secur.h
%{_includedir}/X11/extensions/securproto.h
%{_includedir}/X11/extensions/shapeconst.h
%{_includedir}/X11/extensions/shapeproto.h
%{_includedir}/X11/extensions/shapestr.h
%{_includedir}/X11/extensions/shm.h
%{_includedir}/X11/extensions/shmproto.h
%{_includedir}/X11/extensions/shmstr.h
%{_includedir}/X11/extensions/syncconst.h
%{_includedir}/X11/extensions/syncproto.h
%{_includedir}/X11/extensions/syncstr.h
%{_includedir}/X11/extensions/xcmiscproto.h
%{_includedir}/X11/extensions/xcmiscstr.h
%{_includedir}/X11/extensions/xf86bigfont.h
%{_includedir}/X11/extensions/xf86bigfproto.h
%{_includedir}/X11/extensions/xf86bigfstr.h
%{_includedir}/X11/extensions/xf86dga.h
%{_includedir}/X11/extensions/xf86dga1const.h
%{_includedir}/X11/extensions/xf86dga1proto.h
%{_includedir}/X11/extensions/xf86dga1str.h
%{_includedir}/X11/extensions/xf86dgaconst.h
%{_includedir}/X11/extensions/xf86dgaproto.h
%{_includedir}/X11/extensions/xf86dgastr.h
%{_includedir}/X11/extensions/xf86vm.h
%{_includedir}/X11/extensions/xf86vmproto.h
%{_includedir}/X11/extensions/xf86vmstr.h
%{_includedir}/X11/extensions/xfixesproto.h
%{_includedir}/X11/extensions/xfixeswire.h
%{_includedir}/X11/extensions/xtestconst.h
%{_includedir}/X11/extensions/xtestext1const.h
%{_includedir}/X11/extensions/xtestext1proto.h
%{_includedir}/X11/extensions/xtestproto.h
%{_includedir}/X11/extensions/xwaylandproto.h
%dir %{_includedir}/X11/fonts
%{_includedir}/X11/fonts/FS.h
%{_includedir}/X11/fonts/FSproto.h
%{_includedir}/X11/fonts/font.h
%{_includedir}/X11/fonts/fontproto.h
%{_includedir}/X11/fonts/fontstruct.h
%{_includedir}/X11/fonts/fsmasks.h
%{_includedir}/X11/keysym.h
%{_includedir}/X11/keysymdef.h
%{_datadir}/pkgconfig/bigreqsproto.pc
%{_datadir}/pkgconfig/compositeproto.pc
%{_datadir}/pkgconfig/damageproto.pc
%{_datadir}/pkgconfig/dmxproto.pc
%{_datadir}/pkgconfig/dpmsproto.pc
%{_datadir}/pkgconfig/dri2proto.pc
%{_datadir}/pkgconfig/dri3proto.pc
%{_datadir}/pkgconfig/fixesproto.pc
%{_datadir}/pkgconfig/fontsproto.pc
%{_datadir}/pkgconfig/glproto.pc
%{_datadir}/pkgconfig/inputproto.pc
%{_datadir}/pkgconfig/kbproto.pc
%{_datadir}/pkgconfig/presentproto.pc
%{_datadir}/pkgconfig/randrproto.pc
%{_datadir}/pkgconfig/recordproto.pc
%{_datadir}/pkgconfig/renderproto.pc
%{_datadir}/pkgconfig/resourceproto.pc
%{_datadir}/pkgconfig/scrnsaverproto.pc
%{_datadir}/pkgconfig/videoproto.pc
%{_datadir}/pkgconfig/xcmiscproto.pc
%{_datadir}/pkgconfig/xextproto.pc
%{_datadir}/pkgconfig/xf86bigfontproto.pc
%{_datadir}/pkgconfig/xf86dgaproto.pc
%{_datadir}/pkgconfig/xf86driproto.pc
%{_datadir}/pkgconfig/xf86vidmodeproto.pc
%{_datadir}/pkgconfig/xineramaproto.pc
%{_datadir}/pkgconfig/xproto.pc
%{_datadir}/pkgconfig/xwaylandproto.pc
%{_docdir}/xorgproto/*
%changelog
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2023.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jun 16 2023 Olivier Fourdan <ofourdan@redhat.com> - 2023.2-1
- xorgproto 2023.2
* Mon Jun 5 2023 Olivier Fourdan <ofourdan@redhat.com> - 2023.1-1
- xorgproto 2023.1
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2022.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Aug 11 2022 Peter Hutterer <peter.hutterer@redhat.com> - 2022.2-2
- xorgproto 2022.2
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2022.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Apr 21 2022 Peter Hutterer <peter.hutterer@redhat.com> - 2022.1-1
- xorgproto 2022.1
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2021.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Sep 16 2021 Peter Hutterer <peter.hutterer@redhat.com> - 2021.5-1
- xorgproto 2021.5
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2021.4.99.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Adam Jackson <ajax@redhat.com> - 2021.4.99.2-1
- Prerelease for inputproto snapshot
* Wed Jun 02 2021 Adam Jackson <ajax@redhat.com> - 2021.4-2
- Build with meson not autotools
* Fri Apr 30 2021 Peter Hutterer <peter.hutterer@redhat.com> 2021.4-1
- xorgproto 2021.4 with XFixes 6
* Thu Feb 25 2021 Peter Hutterer <peter.hutterer@redhat.com> 2021.3-1
- xorgproto 2021.3 (no changes except the tarball no longer fails with meson)
- clean up the gitignore file
* Wed Feb 24 2021 Peter Hutterer <peter.hutterer@redhat.com> 2021.2-1
- xorgproto 2021.2
- Remove two header files that belong to libX11/libXv and are now part of
the --enable-legacy build only
* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2019.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Thu Nov 5 10:26:38 AEST 2020 Peter Hutterer <peter.hutterer@redhat.com> - 2019.1-5
- Add BuildRequires for make
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2019.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2019.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2019.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jun 20 2019 Peter Hutterer <peter.hutterer@redhat.com> 2019.1-1
- xorgproto 2019.1
- drop files for xf86misc and proxy management proto, they're legacy now
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2018.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2018.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed Feb 28 2018 Adam Jackson <ajax@redhat.com> - 2018.4-1
- xorgproto 2018.4
* Wed Feb 21 2018 Adam Jackson <ajax@redhat.com> - 2018.3-1
- xorgproto 2018.3
* Mon Feb 12 2018 Adam Jackson <ajax@redhat.com> - 2018.2-1
- xorgproto 2018.2
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2018.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Mon Feb 05 2018 Adam Jackson <ajax@redhat.com> - 2018.1-1
- Switch to merged protocol headers
- Drop evie headers
- Pre-F18 changelog trim
* Tue Nov 07 2017 Adam Jackson <ajax@redhat.com> - 7.7-24
- Drop bootstrap hack (that had been enabled for like nine years anyway)
- Use https URLs
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 7.7-23
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri May 12 2017 Hans de Goede <hdegoede@redhat.com> - 7.7-22
- Add xproto patches from upstream adding XF86Keyboard and XF86RFKill keysyms
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 7.7-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Mon Sep 26 2016 Adam Jackson <ajax@redhat.com> - 7.7-20
- xproto 7.0.31
* Mon Apr 04 2016 Peter Hutterer <peter.hutterer@redhat.com> 7.7-19
- inputproto 2.3.2
* Fri Mar 11 2016 Adam Jackson <ajax@redhat.com> 7.7-18
- videoproto 2.3.3
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 7.7-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Wed Jan 20 2016 Peter Hutterer <peter.hutterer@redhat.com>
- s/define/global/
* Wed Jul 01 2015 Adam Jackson <ajax@redhat.com> 7.7-16
- xproto 7.0.28
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.7-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sun May 17 2015 Dave Airlie <airlied@redhat.com> 7.7-14
- randrproto-1.5.0
* Wed Apr 01 2015 Dave Airlie <airlied@redhat.com> 7.7-13
- randrproto-1.4.1
* Thu Jun 12 2014 Hans de Goede <hdegoede@redhat.com> - 7.7-12
- inputproto-2.3.1
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.7-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Wed Apr 16 2014 Hans de Goede <hdegoede@redhat.com> - 7.7-10
- fontsproto-2.1.3
- videoproto-2.3.2
- xextproto-7.3.0
- xproto-7.0.26
- Cherry pick some unreleased fixes from upstream git
* Thu Jan 23 2014 Adam Jackson <ajax@redhat.com> 7.7-9
- Backport pointer-to-void* changes
* Tue Dec 10 2013 Adam Jackson <ajax@redhat.com> 7.7-8
- glproto 1.4.17
* Wed Nov 06 2013 Adam Jackson <ajax@redhat.com> 7.7-7
- presentproto 1.0
- dri3proto 1.0
- xextproto 7.2.99.901
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.7-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Tue Apr 02 2013 Peter Hutterer <peter.hutterer@redhat.com> 7.7-5
- xproto 7.0.24
* Thu Mar 07 2013 Dave Airlie <airlied@redhat.com> 7.7-4
- autoreconf for aarch64
* Thu Mar 07 2013 Peter Hutterer <peter.hutterer@redhat.com> 7.7-3
- inputproto 2.3
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Tue Jan 08 2013 Adam Jackson <ajax@redhat.com> 7.7-1
- inputproto 2.2.99.1
* Thu Jul 26 2012 Peter Hutterer <peter.hutterer@redhat.com> 7.6-24
- bigregsproto 1.1.2
- compositeproto 0.4.2
- damageproto 1.2.1
- fontsproto 2.1.2
- inputproto 2.2
- kbproto 1.0.6
- recordproto 1.14.2
- scrnsaverproto 1.2.2
- xcmiscproto 1.2.2
- xextproto 7.2.1
* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.6-23
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,279 @@
%global commit 9a55c402aa803fb10e39ab4fd18a709d0cd06fd4
%global shortcommit %(c=%{commit}; echo ${c:0:7})
#global gitdate 20230426
%global pkgname %{?gitdate:xserver}%{!?gitdate:xwayland}
%global default_font_path "catalogue:/etc/X11/fontpath.d,built-ins"
Summary: Xwayland
Name: xorg-x11-server-Xwayland
%global xwayland_version 23.2.2
Version: %{xwayland_version}.vrr.1
Release: 1%{?gitdate:.%{gitdate}git%{shortcommit}}%{?dist}
URL: http://www.x.org
%if 0%{?gitdate}
Source0: https://gitlab.freedesktop.org/xorg/%{pkgname}/-/archive/%{commit}/%{pkgname}-%{shortcommit}.tar.gz
%else
Source0: https://www.x.org/pub/individual/xserver/%{pkgname}-%{xwayland_version}.tar.xz
%endif
Patch0: 967.patch
License: MIT
Requires: xorg-x11-server-common
Requires: libEGL
Requires: libepoxy >= 1.5.5
BuildRequires: gcc
BuildRequires: git-core
BuildRequires: meson
BuildRequires: wayland-devel
BuildRequires: desktop-file-utils
BuildRequires: pkgconfig(wayland-client) >= 1.21.0
BuildRequires: pkgconfig(wayland-protocols) >= 1.30
BuildRequires: pkgconfig(wayland-eglstream-protocols)
BuildRequires: pkgconfig(epoxy) >= 1.5.5
BuildRequires: pkgconfig(fontenc)
BuildRequires: pkgconfig(libdrm) >= 2.4.89
BuildRequires: pkgconfig(libssl)
BuildRequires: pkgconfig(libtirpc)
BuildRequires: pkgconfig(pixman-1)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xau)
BuildRequires: pkgconfig(xdmcp)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xfixes)
BuildRequires: pkgconfig(xfont2)
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(xinerama)
BuildRequires: pkgconfig(xkbfile)
BuildRequires: pkgconfig(xmu)
BuildRequires: pkgconfig(xorg-macros) >= 1.17
BuildRequires: pkgconfig(xpm)
BuildRequires: pkgconfig(xrender)
BuildRequires: pkgconfig(xres)
BuildRequires: pkgconfig(xshmfence) >= 1.1
BuildRequires: pkgconfig(xtrans) >= 1.3.2
BuildRequires: pkgconfig(xtst)
BuildRequires: pkgconfig(xv)
BuildRequires: pkgconfig(libxcvt)
BuildRequires: pkgconfig(libdecor-0) >= 0.1.1
BuildRequires: pkgconfig(liboeffis-1.0) >= 1.0.0
BuildRequires: pkgconfig(libei-1.0) >= 1.0.0
BuildRequires: xorg-x11-proto-devel >= 2023.2-1
BuildRequires: mesa-libGL-devel >= 9.2
BuildRequires: mesa-libEGL-devel
BuildRequires: mesa-libgbm-devel
BuildRequires: audit-libs-devel
BuildRequires: libselinux-devel >= 2.0.86-1
# libunwind is Exclusive for the following arches
%ifarch aarch64 %{arm} hppa ia64 mips ppc ppc64 %{ix86} x86_64
%if !0%{?rhel}
BuildRequires: libunwind-devel
%endif
%endif
BuildRequires: pkgconfig(xcb-aux)
BuildRequires: pkgconfig(xcb-image)
BuildRequires: pkgconfig(xcb-icccm)
BuildRequires: pkgconfig(xcb-keysyms)
BuildRequires: pkgconfig(xcb-renderutil)
%description
Xwayland is an X server for running X clients under Wayland.
%package devel
Summary: Development package
Requires: pkgconfig
Requires: %{name}%{?_isa} = %{xwayland_version}-%{release}
%description devel
The development package provides the developmental files which are
necessary for developing Wayland compositors using Xwayland.
%prep
%autosetup -S git_am -n %{pkgname}-%{?gitdate:%{commit}}%{!?gitdate:%{xwayland_version}}
%build
%meson \
%{?gitdate:-Dxwayland=true -D{xorg,xnest,xvfb,udev}=false} \
-Dxwayland_eglstream=true \
-Ddefault_font_path=%{default_font_path} \
-Dbuilder_string="Build ID: %{name} %{xwayland_version}-%{release}" \
-Dxkb_output_dir=%{_localstatedir}/lib/xkb \
-Dxcsecurity=true \
-Dglamor=true \
-Ddri3=true
%meson_build
%install
%meson_install
# Remove unwanted files/dirs
rm $RPM_BUILD_ROOT%{_mandir}/man1/Xserver.1*
rm -Rf $RPM_BUILD_ROOT%{_libdir}/xorg
rm -Rf $RPM_BUILD_ROOT%{_includedir}/xorg
rm -Rf $RPM_BUILD_ROOT%{_datadir}/aclocal
rm -Rf $RPM_BUILD_ROOT%{_localstatedir}/lib/xkb
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
%files
%{_bindir}/Xwayland
%{_mandir}/man1/Xwayland.1*
%{_datadir}/applications/org.freedesktop.Xwayland.desktop
%files devel
%{_libdir}/pkgconfig/xwayland.pc
%changelog
* Thu Oct 26 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.2.2-1
- xwayland 23.2.2 - (#2246029)
* Wed Oct 25 2023 Peter Hutterer <peter.hutterer@redhat.com> - 23.2.1-2
- Fix for CVE-2023-5367
* Wed Sep 20 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.2.1-1
- xwayland 23.2.1 - (#2239813)
* Mon Sep 11 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.2.0-2
- migrated to SPDX license
* Wed Aug 16 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.2.0-1
- xwayland 23.2.0
* Wed Aug 2 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.99.902-1
- xwayland 23.1.99.902 (xwayland 23.2.0 rc2)
* Mon Jul 31 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.99.901-2
- Fix devel package requires.
* Wed Jul 19 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.99.901-1
- xwayland 23.1.99.901 (xwayland 23.2.0 rc1)
* Tue Jun 6 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.2-1
- xwayland 23.1.2
* Thu Apr 27 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.1-2
- Fix spec file to build from git upstream - (#2190211)
* Wed Mar 29 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.1-1
- xwayland 23.1.1 - (#2182734)
CVE fix for: CVE-2023-1393
* Wed Mar 22 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.0-1
- xwayland 23.1.0 - (#2180913)
* Thu Mar 9 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.0.99.902-1
- xwayland 23.0.99.902 (xwayland 23.1.0 rc2) - (#2172415, #2173201)
* Wed Feb 22 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.0.99.901-1
- xwayland 23.0.99.901 (xwayland 23.1.0 rc1) - (#2172415)
* Tue Feb 7 2023 Olivier Fourdan <ofourdan@redhat.com> - 22.1.8-1
- xwayland 22.1.8
Fixes CVE-2023-0494 (#2165995, #2167566, #2167734)
* Sun Jan 29 2023 Stefan Bluhm <stefan.bluhm@clacee.eu> - 22.1.7-4
- Updated conditional Fedora statement.
* Thu Jan 19 2023 Olivier Fourdan <ofourdan@redhat.com> - 22.1.7-3
- Use the recommended way to apply conditional patches without
conditionalizing the sources (for byte-swapped clients).
* Tue Jan 17 2023 Olivier Fourdan <ofourdan@redhat.com> - 22.1.7-2
- Disallow byte-swapped clients on Fedora 38 and above (#2159489)
* Mon Dec 19 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.7-1
- xwayland 22.1.7
* Wed Dec 14 2022 Peter Hutterer <peter.hutterer@redhat.com> - 22.1.6-1
- xwayland 22.1.6
Fixes CVE-2022-46340, CVE-2022-46341, CVE-2022-46342, CVE-2022-46343,
CVE-2022-46344, CVE-2022-4283
* Wed Nov 2 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.5-1
- xwayland 22.1.5 (#2139387)
* Thu Oct 20 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.4-1
- xwayland 22.1.4 (#2136518)
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 22.1.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue Jul 12 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.3-1
- xwayland 22.1.3 - (#2106387)
Fix CVE-2022-2319/ZDI-CAN-16062, CVE-2022-2320/ZDI-CAN-16070
* Wed May 25 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.2-1
- xwayland 22.1.2 - (#2090172)
* Thu Mar 31 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.1-1
- xwayland 22.1.1 - (#2070435)
* Wed Feb 16 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.0
- xwayland 22.1.0 - (#2055270)
* Wed Feb 2 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.0.99.902
- xwayland 22.0.99.902 (xwayland 22.1.0 rc2) - (#2042521)
* Tue Jan 25 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.0.99.901
- xwayland 22.0.99.901 (xwayland 22.1.0 rc1) - (#2042521)
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 21.1.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Tue Dec 14 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.4
- xwayland 21.1.4
* Mon Nov 8 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.3
- xwayland 21.1.3 - (#2016468)
* Thu Oct 21 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.2.901-1
- xwayland 21.1.2.901 (aka 21.1.3 RC1) - (#2015413)
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 21.1.2-3
- Rebuilt with OpenSSL 3.0.0
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 21.1.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jul 9 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.2-1
- xwayland 21.1.2
* Thu Jul 1 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.1.901-1
- xwayland 21.1.1.901
* Mon Jun 21 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.1-3
- Fix a use-after-free in the previous changes for GLX
* Thu Jun 10 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.1-2
- Backport fixes for GLX and EGLstream (#1948003)
* Wed Apr 14 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.1-1
- xwayland 21.1.1 (CVE-2021-3472 / ZDI-CAN-1259)
* Thu Mar 18 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.0-1
- xwayland 21.1.0
* Thu Mar 4 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.0.99.902-1
- xwayland 21.0.99.902
- Remove xdmcp, udev, udev_kms build options
- Stop overriding the vendor name, same as xorg-x11-server
* Thu Feb 18 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.0.99.901-1
- xwayland 21.0.99.901
* Mon Feb 1 2021 Olivier Fourdan <ofourdan@redhat.com> - 1.20.99.1-0.1.20210201git5429791
- Initial import (#1912335).