mirror of
https://github.com/ublue-os/bazzite.git
synced 2025-01-26 09:35:24 +00:00
Merge branch 'main' into testing
This commit is contained in:
commit
69362a11a5
@ -20,8 +20,7 @@ Patch1: 720p.patch
|
||||
Patch2: disable-steam-touch-click-atom.patch
|
||||
Patch3: external-rotation.patch
|
||||
Patch4: panel-type.patch
|
||||
Patch5: gestures.patch
|
||||
Patch6: deckhd.patch
|
||||
Patch5: deckhd.patch
|
||||
|
||||
BuildRequires: meson >= 0.54.0
|
||||
BuildRequires: ninja-build
|
||||
|
@ -1,257 +0,0 @@
|
||||
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>
|
@ -1,198 +0,0 @@
|
||||
Name: wayland-protocols
|
||||
%global wayland_version 1.32
|
||||
Version: %{wayland_version}.bazzite.{{{ git_dir_version }}}
|
||||
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
|
@ -1,387 +0,0 @@
|
||||
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
|
||||
|
@ -1,31 +0,0 @@
|
||||
#!/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"
|
@ -1,401 +0,0 @@
|
||||
%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}.bazzite.{{{ git_dir_version }}}
|
||||
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
|
@ -1,729 +0,0 @@
|
||||
From e496ed0a6b6c467ac01e33fa14e05dc2e0888a74 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Gospodnetich <me@kylegospodneti.ch>
|
||||
Date: Wed, 31 Jan 2024 17:22:32 -0800
|
||||
Subject: [PATCH 1/4] Revert "xwayland: add support for wp-tearing-control-v1"
|
||||
|
||||
This reverts commit 1ce2025822244c85826ab36febfa5945186b4a2a.
|
||||
---
|
||||
hw/xwayland/meson.build | 3 ---
|
||||
hw/xwayland/xwayland-present.c | 21 +++------------------
|
||||
hw/xwayland/xwayland-present.h | 1 -
|
||||
hw/xwayland/xwayland-screen.c | 5 -----
|
||||
hw/xwayland/xwayland-screen.h | 1 -
|
||||
hw/xwayland/xwayland-window.c | 9 ---------
|
||||
hw/xwayland/xwayland-window.h | 1 -
|
||||
7 files changed, 3 insertions(+), 38 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index 54529b64e..fbdbb2458 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -48,7 +48,6 @@ xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
-tearing_xml = join_paths(protodir, 'staging', 'tearing-control', 'tearing-control-v1.xml')
|
||||
|
||||
client_header = generator(scanner,
|
||||
output : '@BASENAME@-client-protocol.h',
|
||||
@@ -77,7 +76,6 @@ srcs += client_header.process(xdg_shell_xml)
|
||||
srcs += client_header.process(drm_lease_xml)
|
||||
srcs += client_header.process(shortcuts_inhibit_xml)
|
||||
srcs += client_header.process(xwayland_shell_xml)
|
||||
-srcs += client_header.process(tearing_xml)
|
||||
srcs += code.process(relative_xml)
|
||||
srcs += code.process(pointer_xml)
|
||||
srcs += code.process(gestures_xml)
|
||||
@@ -90,7 +88,6 @@ srcs += code.process(xdg_shell_xml)
|
||||
srcs += code.process(drm_lease_xml)
|
||||
srcs += code.process(shortcuts_inhibit_xml)
|
||||
srcs += code.process(xwayland_shell_xml)
|
||||
-srcs += code.process(tearing_xml)
|
||||
|
||||
if build_ei
|
||||
xwayland_dep += libei_dep
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 941be06da..bb3310dc9 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,9 +34,8 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
|
||||
-#define XWL_PRESENT_CAPS PresentCapabilityAsync | PresentCapabilityAsyncMayTear
|
||||
+#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
|
||||
|
||||
/*
|
||||
@@ -797,16 +796,6 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
damage_box->x2 - damage_box->x1,
|
||||
damage_box->y2 - damage_box->y1);
|
||||
|
||||
- if (xwl_window->tearing_control) {
|
||||
- uint32_t hint;
|
||||
- if (event->async_may_tear)
|
||||
- hint = WP_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC;
|
||||
- else
|
||||
- hint = WP_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC;
|
||||
-
|
||||
- wp_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control, hint);
|
||||
- }
|
||||
-
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
if (!vblank->sync_flip) {
|
||||
@@ -1010,15 +999,11 @@ xwl_present_pixmap(WindowPtr window,
|
||||
}
|
||||
|
||||
vblank->event_id = ++xwl_present_event_id;
|
||||
- event->async_may_tear = options & PresentOptionAsyncMayTear;
|
||||
|
||||
- /* Synchronous Xwayland presentations always complete (at least) one frame after they
|
||||
+ /* Xwayland presentations always complete (at least) one frame after they
|
||||
* are executed
|
||||
*/
|
||||
- if (event->async_may_tear)
|
||||
- vblank->exec_msc = vblank->target_msc;
|
||||
- else
|
||||
- vblank->exec_msc = vblank->target_msc - 1;
|
||||
+ vblank->exec_msc = vblank->target_msc - 1;
|
||||
|
||||
vblank->queued = TRUE;
|
||||
if (crtc_msc < vblank->exec_msc) {
|
||||
diff --git a/hw/xwayland/xwayland-present.h b/hw/xwayland/xwayland-present.h
|
||||
index 4fd1e579f..806272089 100644
|
||||
--- a/hw/xwayland/xwayland-present.h
|
||||
+++ b/hw/xwayland/xwayland-present.h
|
||||
@@ -59,7 +59,6 @@ struct xwl_present_event {
|
||||
present_vblank_rec vblank;
|
||||
|
||||
PixmapPtr pixmap;
|
||||
- Bool async_may_tear;
|
||||
};
|
||||
|
||||
Bool xwl_present_entered_for_each_frame_callback(void);
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index cc14e0771..2bc553b50 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -63,7 +63,6 @@
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
static DevPrivateKeyRec xwl_client_private_key;
|
||||
@@ -462,10 +461,6 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
xwl_screen->xwayland_shell =
|
||||
wl_registry_bind(registry, id, &xwayland_shell_v1_interface, 1);
|
||||
}
|
||||
- else if (strcmp(interface, "wp_tearing_control_manager_v1") == 0) {
|
||||
- xwl_screen->tearing_control_manager =
|
||||
- wl_registry_bind(registry, id, &wp_tearing_control_manager_v1_interface, 1);
|
||||
- }
|
||||
#ifdef XWL_HAS_GLAMOR
|
||||
else if (xwl_screen->glamor) {
|
||||
xwl_glamor_init_wl_registry(xwl_screen, registry, id, interface,
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index bd66dd681..656d2afde 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -110,7 +110,6 @@ struct xwl_screen {
|
||||
struct zxdg_output_manager_v1 *xdg_output_manager;
|
||||
struct wp_viewporter *viewporter;
|
||||
struct xwayland_shell_v1 *xwayland_shell;
|
||||
- struct wp_tearing_control_manager_v1 *tearing_control_manager;
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index 4978f37c7..b018d9656 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -46,7 +46,6 @@
|
||||
#include "xwayland-shm.h"
|
||||
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
@@ -967,11 +966,6 @@ ensure_surface_for_window(WindowPtr window)
|
||||
xwl_window_check_resolution_change_emulation(xwl_window);
|
||||
}
|
||||
|
||||
- if (xwl_screen->tearing_control_manager) {
|
||||
- xwl_window->tearing_control = wp_tearing_control_manager_v1_get_tearing_control(
|
||||
- xwl_screen->tearing_control_manager, xwl_window->surface);
|
||||
- }
|
||||
-
|
||||
return TRUE;
|
||||
|
||||
err:
|
||||
@@ -1182,9 +1176,6 @@ xwl_unrealize_window(WindowPtr window)
|
||||
xwl_present_for_each_frame_callback(xwl_window, xwl_present_unrealize_window);
|
||||
#endif
|
||||
|
||||
- if (xwl_window->tearing_control)
|
||||
- wp_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
-
|
||||
release_wl_surface_for_window(xwl_window);
|
||||
xorg_list_del(&xwl_window->link_damage);
|
||||
xorg_list_del(&xwl_window->link_window);
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index 7fbb2a623..f8200d537 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -121,7 +121,6 @@ struct xwl_window {
|
||||
struct xwl_dmabuf_feedback feedback;
|
||||
/* If TRUE, the window buffer format supports scanout with implicit modifier */
|
||||
Bool has_implicit_scanout_support;
|
||||
- struct wp_tearing_control_v1 *tearing_control;
|
||||
};
|
||||
|
||||
struct xwl_window *xwl_window_get(WindowPtr window);
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From 01a8a454f04dca944db446815f28bf46f8f822b6 Mon Sep 17 00:00:00 2001
|
||||
From: Joshua Ashton <joshua@froggi.es>
|
||||
Date: Wed, 24 Aug 2022 23:16:24 +0000
|
||||
Subject: [PATCH 2/4] xwayland: Implement tearing protocol
|
||||
|
||||
---
|
||||
hw/xwayland/meson.build | 3 +
|
||||
.../tearing-control-unstable-v1.xml | 142 ++++++++++++++++++
|
||||
hw/xwayland/xwayland-present.c | 11 ++
|
||||
hw/xwayland/xwayland-screen.c | 4 +
|
||||
hw/xwayland/xwayland-screen.h | 1 +
|
||||
hw/xwayland/xwayland-window.c | 11 ++
|
||||
hw/xwayland/xwayland-window.h | 1 +
|
||||
7 files changed, 173 insertions(+)
|
||||
create mode 100644 hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index fbdbb2458..d29e55d7d 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -46,6 +46,7 @@ dmabuf_xml = join_paths(protodir, 'unstable', 'linux-dmabuf', 'linux-dmabuf-unst
|
||||
viewporter_xml = join_paths(protodir, 'stable', 'viewporter', 'viewporter.xml')
|
||||
xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
+tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'tearing-control-unstable-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
|
||||
@@ -74,6 +75,7 @@ srcs += client_header.process(dmabuf_xml)
|
||||
srcs += client_header.process(viewporter_xml)
|
||||
srcs += client_header.process(xdg_shell_xml)
|
||||
srcs += client_header.process(drm_lease_xml)
|
||||
+srcs += client_header.process(tearing_xml)
|
||||
srcs += client_header.process(shortcuts_inhibit_xml)
|
||||
srcs += client_header.process(xwayland_shell_xml)
|
||||
srcs += code.process(relative_xml)
|
||||
@@ -86,6 +88,7 @@ srcs += code.process(dmabuf_xml)
|
||||
srcs += code.process(viewporter_xml)
|
||||
srcs += code.process(xdg_shell_xml)
|
||||
srcs += code.process(drm_lease_xml)
|
||||
+srcs += code.process(tearing_xml)
|
||||
srcs += code.process(shortcuts_inhibit_xml)
|
||||
srcs += code.process(xwayland_shell_xml)
|
||||
|
||||
diff --git a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml b/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
new file mode 100644
|
||||
index 000000000..ce130718e
|
||||
--- /dev/null
|
||||
+++ b/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
@@ -0,0 +1,142 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<protocol name="zwp_tearing_control_unstable_v1">
|
||||
+
|
||||
+ <copyright>
|
||||
+ Copyright © 2021 Xaver Hugl
|
||||
+
|
||||
+ 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>
|
||||
+
|
||||
+ <interface name="zwp_tearing_control_v1" version="1">
|
||||
+ <description summary="protocol for tearing control">
|
||||
+ This global is a factory interface, allowing clients to request
|
||||
+ the compositor to use asynchronous page flips on a per-surface basis.
|
||||
+
|
||||
+ 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 tearing_control_exists protocol error.
|
||||
+
|
||||
+ 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.
|
||||
+ Backward incompatible changes are done by bumping the version number in
|
||||
+ the protocol and interface names and resetting the interface version.
|
||||
+ Once the protocol is to be declared stable, the 'z' prefix and the
|
||||
+ version number in the protocol and interface names are removed and the
|
||||
+ interface version number is reset.
|
||||
+ </description>
|
||||
+
|
||||
+ <request name="destroy" type="destructor">
|
||||
+ <description summary="destroy tearing control factory object">
|
||||
+ Destroy this tearing control factory object. Other objects, including
|
||||
+ zwp_surface_tearing_control_v1 objects created by this factory,
|
||||
+ shall not be affected by this request.
|
||||
+ </description>
|
||||
+ </request>
|
||||
+
|
||||
+ <enum name="error">
|
||||
+ <entry name="tearing_control_exists" value="0"
|
||||
+ summary="the surface already has a tearing object associated"/>
|
||||
+ </enum>
|
||||
+
|
||||
+ <request name="get_tearing_control">
|
||||
+ <description summary="extend surface interface for tearing control">
|
||||
+ Instantiate an interface extension for the given wl_surface to
|
||||
+ request asynchronous page flips for presentation.
|
||||
+
|
||||
+ If the given wl_surface already has a zwp_surface_tearing_control_v1
|
||||
+ object associated, the tearing_control_exists protocol error is raised.
|
||||
+ </description>
|
||||
+
|
||||
+ <arg name="id" type="new_id"
|
||||
+ interface="zwp_surface_tearing_control_v1"
|
||||
+ summary="the new surface tearing interface id"/>
|
||||
+ <arg name="surface" type="object" interface="wl_surface"
|
||||
+ summary="the surface"/>
|
||||
+ </request>
|
||||
+ </interface>
|
||||
+
|
||||
+ <interface name="zwp_surface_tearing_control_v1" version="1">
|
||||
+ <description summary="per-surface tearing control request">
|
||||
+ An additional interface to a wl_surface object, which allows the client
|
||||
+ to hint to the compositor if and when it should use asynchronous page
|
||||
+ flips for presentation.
|
||||
+ </description>
|
||||
+
|
||||
+ <enum name="presentation_hint">
|
||||
+ <description summary="presentation hint values">
|
||||
+ This enum provides information for if and when submitted frames from
|
||||
+ the client may be presented with tearing. The possible values are:
|
||||
+
|
||||
+ VSYNC:
|
||||
+ Presentation should be synchronized to the vertical retrace by the
|
||||
+ display hardware so that tearing doesn't happen.
|
||||
+
|
||||
+ VSYNC_RELAXED:
|
||||
+ Presentation should be synchronized to the vertical retrace by the
|
||||
+ display hardware so that tearing doesn't happen as long as the client
|
||||
+ submits new frame fast enough. If a frame is late for presentation,
|
||||
+ that is, if more than one vertical retrace has occurred since the last
|
||||
+ commit then the compositor should use asynchronous page flips to
|
||||
+ immediately present the frame. This may cause visible tearing.
|
||||
+ The compositor is encouraged to send requested frame callbacks as soon
|
||||
+ as possible after such a late commit to make sure clients have as much
|
||||
+ time as possible to render their next frame.
|
||||
+
|
||||
+ ASYNC:
|
||||
+ Presentation should not be synchronized to the vertical retrace,
|
||||
+ committed frames are meant to be immediately presented with asynchronous
|
||||
+ page flips with as little delay as possible. Tearing will be visible.
|
||||
+ The compositor is encouraged to send requested frame callbacks as soon
|
||||
+ as possible after every commit.
|
||||
+ </description>
|
||||
+ <entry name="vsync" value="0"
|
||||
+ summary="tearing-free presentation"/>
|
||||
+ <entry name="vsync_relaxed" value="1"
|
||||
+ summary="async pageflips on missed presentation deadline"/>
|
||||
+ <entry name="async" value="2"
|
||||
+ summary="async pageflips for all frames"/>
|
||||
+ </enum>
|
||||
+
|
||||
+ <request name="set_presentation_hint">
|
||||
+ <description summary="set presentation hint">
|
||||
+ Set the presentation hint for the associated wl_surface. See
|
||||
+ presentation_hint for the description. This state is double-buffered
|
||||
+ and is applied on the next wl_surface.commit.
|
||||
+
|
||||
+ The compositor is free to dynamically respect or ignore this hint based
|
||||
+ on various conditions, including GPU capabilities and surface window
|
||||
+ state.
|
||||
+ </description>
|
||||
+ <arg name="hint" type="uint" enum="presentation_hint"/>
|
||||
+ </request>
|
||||
+
|
||||
+ <request name="destroy" type="destructor">
|
||||
+ <description summary="destroy synchronization object">
|
||||
+ Destroy this surface tearing object and remove the presentation hint.
|
||||
+ The change will be applied on the next wl_surface.commit.
|
||||
+ </description>
|
||||
+ </request>
|
||||
+ </interface>
|
||||
+
|
||||
+</protocol>
|
||||
+
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index bb3310dc9..6f1d57a42 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,6 +34,8 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+
|
||||
|
||||
#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
|
||||
@@ -796,6 +798,15 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
damage_box->x2 - damage_box->x1,
|
||||
damage_box->y2 - damage_box->y1);
|
||||
|
||||
+
|
||||
+ // Josh: No support for VSync relaxed, this is something that should
|
||||
+ // be determined by a user setting in gamescope.
|
||||
+ if (xwl_window->tearing_control)
|
||||
+ zwp_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
+ sync_flip
|
||||
+ ? ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
+ : ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
+
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
if (!vblank->sync_flip) {
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index 2bc553b50..e35861e46 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -62,6 +62,7 @@
|
||||
#include "xdg-output-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
@@ -457,6 +458,9 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
else if (strcmp(interface, "wp_viewporter") == 0) {
|
||||
xwl_screen->viewporter = wl_registry_bind(registry, id, &wp_viewporter_interface, 1);
|
||||
}
|
||||
+ else if (strcmp(interface, "zwp_tearing_control_v1") == 0) {
|
||||
+ xwl_screen->tearing_control = wl_registry_bind(registry, id, &zwp_tearing_control_v1_interface, 1);
|
||||
+ }
|
||||
else if (strcmp(interface, "xwayland_shell_v1") == 0 && xwl_screen->rootless) {
|
||||
xwl_screen->xwayland_shell =
|
||||
wl_registry_bind(registry, id, &xwayland_shell_v1_interface, 1);
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index 656d2afde..bf75278fd 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -113,6 +113,7 @@ struct xwl_screen {
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
+ struct zwp_tearing_control_v1 *tearing_control;
|
||||
struct xwl_output *fixed_output;
|
||||
struct xorg_list pending_wl_surface_destroy;
|
||||
uint64_t surface_association_serial;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index b018d9656..7b3534385 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
#define DELAYED_WL_SURFACE_DESTROY 1000 /* ms */
|
||||
@@ -920,6 +921,11 @@ ensure_surface_for_window(WindowPtr window)
|
||||
goto err;
|
||||
}
|
||||
|
||||
+ if (xwl_screen->tearing_control) {
|
||||
+ xwl_window->tearing_control =
|
||||
+ zwp_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
+ }
|
||||
+
|
||||
if (xwl_screen->xwayland_shell) {
|
||||
xwl_window->xwayland_surface = xwayland_shell_v1_get_xwayland_surface(
|
||||
xwl_screen->xwayland_shell, xwl_window->surface);
|
||||
@@ -1169,6 +1175,11 @@ xwl_unrealize_window(WindowPtr window)
|
||||
if (xwl_window_has_viewport_enabled(xwl_window))
|
||||
xwl_window_disable_viewport(xwl_window);
|
||||
|
||||
+ if (xwl_window->tearing_control) {
|
||||
+ zwp_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
+ xwl_window->tearing_control = NULL;
|
||||
+ }
|
||||
+
|
||||
xwl_dmabuf_feedback_destroy(&xwl_window->feedback);
|
||||
|
||||
#ifdef GLAMOR_HAS_GBM
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index f8200d537..519d9394c 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -99,6 +99,7 @@ struct xwl_window {
|
||||
struct wp_viewport *viewport;
|
||||
float scale_x, scale_y;
|
||||
struct xdg_surface *xdg_surface;
|
||||
+ struct zwp_surface_tearing_control_v1 *tearing_control;
|
||||
struct xdg_toplevel *xdg_toplevel;
|
||||
WindowPtr window;
|
||||
struct xorg_list link_damage;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From 3357fc57deb1e397e6a2023a4b0254aeed957349 Mon Sep 17 00:00:00 2001
|
||||
From: Joshua Ashton <joshua@froggi.es>
|
||||
Date: Wed, 31 Aug 2022 12:57:09 +0000
|
||||
Subject: [PATCH 3/4] Use gamescope tearing protocol instead
|
||||
|
||||
Renamed to not clash
|
||||
---
|
||||
hw/xwayland/meson.build | 2 +-
|
||||
...xml => gamescope-tearing-control-unstable-v1.xml} | 12 ++++++------
|
||||
hw/xwayland/xwayland-present.c | 8 ++++----
|
||||
hw/xwayland/xwayland-screen.c | 6 +++---
|
||||
hw/xwayland/xwayland-screen.h | 2 +-
|
||||
hw/xwayland/xwayland-window.c | 6 +++---
|
||||
hw/xwayland/xwayland-window.h | 2 +-
|
||||
7 files changed, 19 insertions(+), 19 deletions(-)
|
||||
rename hw/xwayland/protocols/unstable/tearing-control/{tearing-control-unstable-v1.xml => gamescope-tearing-control-unstable-v1.xml} (93%)
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index d29e55d7d..73f2bdd94 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -46,7 +46,7 @@ dmabuf_xml = join_paths(protodir, 'unstable', 'linux-dmabuf', 'linux-dmabuf-unst
|
||||
viewporter_xml = join_paths(protodir, 'stable', 'viewporter', 'viewporter.xml')
|
||||
xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
-tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'tearing-control-unstable-v1.xml')
|
||||
+tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'gamescope-tearing-control-unstable-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
|
||||
diff --git a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
similarity index 93%
|
||||
rename from hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
rename to hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
index ce130718e..3c7cfb09e 100644
|
||||
--- a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
+++ b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
-<protocol name="zwp_tearing_control_unstable_v1">
|
||||
+<protocol name="gamescope_tearing_control_unstable_v1">
|
||||
|
||||
<copyright>
|
||||
Copyright © 2021 Xaver Hugl
|
||||
@@ -24,7 +24,7 @@
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
- <interface name="zwp_tearing_control_v1" version="1">
|
||||
+ <interface name="gamescope_tearing_control_v1" version="1">
|
||||
<description summary="protocol for tearing control">
|
||||
This global is a factory interface, allowing clients to request
|
||||
the compositor to use asynchronous page flips on a per-surface basis.
|
||||
@@ -48,7 +48,7 @@
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy tearing control factory object">
|
||||
Destroy this tearing control factory object. Other objects, including
|
||||
- zwp_surface_tearing_control_v1 objects created by this factory,
|
||||
+ gamescope_surface_tearing_control_v1 objects created by this factory,
|
||||
shall not be affected by this request.
|
||||
</description>
|
||||
</request>
|
||||
@@ -63,19 +63,19 @@
|
||||
Instantiate an interface extension for the given wl_surface to
|
||||
request asynchronous page flips for presentation.
|
||||
|
||||
- If the given wl_surface already has a zwp_surface_tearing_control_v1
|
||||
+ If the given wl_surface already has a gamescope_surface_tearing_control_v1
|
||||
object associated, the tearing_control_exists protocol error is raised.
|
||||
</description>
|
||||
|
||||
<arg name="id" type="new_id"
|
||||
- interface="zwp_surface_tearing_control_v1"
|
||||
+ interface="gamescope_surface_tearing_control_v1"
|
||||
summary="the new surface tearing interface id"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"
|
||||
summary="the surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
- <interface name="zwp_surface_tearing_control_v1" version="1">
|
||||
+ <interface name="gamescope_surface_tearing_control_v1" version="1">
|
||||
<description summary="per-surface tearing control request">
|
||||
An additional interface to a wl_surface object, which allows the client
|
||||
to hint to the compositor if and when it should use asynchronous page
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 6f1d57a42..5cbd767c9 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,7 +34,7 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
|
||||
|
||||
#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
@@ -802,10 +802,10 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
// Josh: No support for VSync relaxed, this is something that should
|
||||
// be determined by a user setting in gamescope.
|
||||
if (xwl_window->tearing_control)
|
||||
- zwp_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
+ gamescope_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
sync_flip
|
||||
- ? ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
- : ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
+ ? GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
+ : GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index e35861e46..2a025db18 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -62,7 +62,7 @@
|
||||
#include "xdg-output-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
@@ -458,8 +458,8 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
else if (strcmp(interface, "wp_viewporter") == 0) {
|
||||
xwl_screen->viewporter = wl_registry_bind(registry, id, &wp_viewporter_interface, 1);
|
||||
}
|
||||
- else if (strcmp(interface, "zwp_tearing_control_v1") == 0) {
|
||||
- xwl_screen->tearing_control = wl_registry_bind(registry, id, &zwp_tearing_control_v1_interface, 1);
|
||||
+ else if (strcmp(interface, "gamescope_tearing_control_v1") == 0) {
|
||||
+ xwl_screen->tearing_control = wl_registry_bind(registry, id, &gamescope_tearing_control_v1_interface, 1);
|
||||
}
|
||||
else if (strcmp(interface, "xwayland_shell_v1") == 0 && xwl_screen->rootless) {
|
||||
xwl_screen->xwayland_shell =
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index bf75278fd..d6b1a1d84 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -113,7 +113,7 @@ struct xwl_screen {
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
- struct zwp_tearing_control_v1 *tearing_control;
|
||||
+ struct gamescope_tearing_control_v1 *tearing_control;
|
||||
struct xwl_output *fixed_output;
|
||||
struct xorg_list pending_wl_surface_destroy;
|
||||
uint64_t surface_association_serial;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index 7b3534385..d3bbe703d 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -48,7 +48,7 @@
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
#define DELAYED_WL_SURFACE_DESTROY 1000 /* ms */
|
||||
@@ -923,7 +923,7 @@ ensure_surface_for_window(WindowPtr window)
|
||||
|
||||
if (xwl_screen->tearing_control) {
|
||||
xwl_window->tearing_control =
|
||||
- zwp_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
+ gamescope_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
}
|
||||
|
||||
if (xwl_screen->xwayland_shell) {
|
||||
@@ -1176,7 +1176,7 @@ xwl_unrealize_window(WindowPtr window)
|
||||
xwl_window_disable_viewport(xwl_window);
|
||||
|
||||
if (xwl_window->tearing_control) {
|
||||
- zwp_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
+ gamescope_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
xwl_window->tearing_control = NULL;
|
||||
}
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index 519d9394c..95f770c07 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -99,7 +99,7 @@ struct xwl_window {
|
||||
struct wp_viewport *viewport;
|
||||
float scale_x, scale_y;
|
||||
struct xdg_surface *xdg_surface;
|
||||
- struct zwp_surface_tearing_control_v1 *tearing_control;
|
||||
+ struct gamescope_surface_tearing_control_v1 *tearing_control;
|
||||
struct xdg_toplevel *xdg_toplevel;
|
||||
WindowPtr window;
|
||||
struct xorg_list link_damage;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From c799ef123d1ed4eddc7972451b1b313b14195935 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Gospodnetich <me@kylegospodneti.ch>
|
||||
Date: Wed, 31 Jan 2024 17:36:04 -0800
|
||||
Subject: [PATCH 4/4] Fix missing sync_flip param
|
||||
|
||||
---
|
||||
hw/xwayland/xwayland-present.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 5cbd767c9..f22e8f987 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -754,7 +754,7 @@ xwl_present_clear_window_flip(WindowPtr window)
|
||||
}
|
||||
|
||||
static Bool
|
||||
-xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
+xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage, Bool sync_flip)
|
||||
{
|
||||
WindowPtr present_window = vblank->window;
|
||||
PixmapPtr pixmap = vblank->pixmap;
|
||||
@@ -873,7 +873,7 @@ xwl_present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
|
||||
} else
|
||||
damage = RegionDuplicate(&window->clipList);
|
||||
|
||||
- if (xwl_present_flip(vblank, damage)) {
|
||||
+ if (xwl_present_flip(vblank, damage, vblank->sync_flip)) {
|
||||
WindowPtr toplvl_window = xwl_present_toplvl_pixmap_window(vblank->window);
|
||||
PixmapPtr old_pixmap = screen->GetWindowPixmap(window);
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 317712eb5a1aa4a1c3d737a8fcaee57add9981c9 Mon Sep 17 00:00:00 2001
|
||||
From: Joshua Ashton <joshua@froggi.es>
|
||||
Date: Sat, 11 May 2024 07:25:48 +0100
|
||||
Subject: [PATCH] xwayland: Send ei_device_frame on device_scroll_discrete
|
||||
|
||||
This fixes the scroll action in Steam Input in SteamOS/Gamescope when using the new libeis backend.
|
||||
|
||||
Fixes: a13333427072dfb27792c5c9ff22ed145ede0f0a ("xwayland: Add XTEST support using EIS")
|
||||
Signed-off-by: Joshua Ashton <joshua@froggi.es>
|
||||
---
|
||||
hw/xwayland/xwayland-xtest.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-xtest.c b/hw/xwayland/xwayland-xtest.c
|
||||
index 756a6d8f7..4976a3d7e 100644
|
||||
--- a/hw/xwayland/xwayland-xtest.c
|
||||
+++ b/hw/xwayland/xwayland-xtest.c
|
||||
@@ -584,6 +584,7 @@ xwl_send_event_to_ei(struct xwl_ei_client *xwl_ei_client,
|
||||
} else if (detail == 7) {
|
||||
ei_device_scroll_discrete(ei_device, SCROLL_STEP, 0);
|
||||
}
|
||||
+ ei_device_frame(ei_device, ei_now(ei));
|
||||
}
|
||||
break;
|
||||
case KeyPress:
|
||||
--
|
||||
2.44.0
|
||||
|
3
spec_files/xorg-x11-server-Xwayland/README.md
Normal file
3
spec_files/xorg-x11-server-Xwayland/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# xorg-x11-server-Xwayland
|
||||
|
||||
The xorg-x11-server-Xwayland package
|
@ -1,729 +0,0 @@
|
||||
From 0151613de184f0ac8bc2c685f37492919602e15f Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Gospodnetich <me@kylegospodneti.ch>
|
||||
Date: Wed, 31 Jan 2024 17:22:32 -0800
|
||||
Subject: [PATCH 1/4] Revert "xwayland: add support for wp-tearing-control-v1"
|
||||
|
||||
This reverts commit 1ce2025822244c85826ab36febfa5945186b4a2a.
|
||||
---
|
||||
hw/xwayland/meson.build | 3 ---
|
||||
hw/xwayland/xwayland-present.c | 21 +++------------------
|
||||
hw/xwayland/xwayland-present.h | 1 -
|
||||
hw/xwayland/xwayland-screen.c | 5 -----
|
||||
hw/xwayland/xwayland-screen.h | 1 -
|
||||
hw/xwayland/xwayland-window.c | 9 ---------
|
||||
hw/xwayland/xwayland-window.h | 1 -
|
||||
7 files changed, 3 insertions(+), 38 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index 54529b64e..fbdbb2458 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -48,7 +48,6 @@ xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
-tearing_xml = join_paths(protodir, 'staging', 'tearing-control', 'tearing-control-v1.xml')
|
||||
|
||||
client_header = generator(scanner,
|
||||
output : '@BASENAME@-client-protocol.h',
|
||||
@@ -77,7 +76,6 @@ srcs += client_header.process(xdg_shell_xml)
|
||||
srcs += client_header.process(drm_lease_xml)
|
||||
srcs += client_header.process(shortcuts_inhibit_xml)
|
||||
srcs += client_header.process(xwayland_shell_xml)
|
||||
-srcs += client_header.process(tearing_xml)
|
||||
srcs += code.process(relative_xml)
|
||||
srcs += code.process(pointer_xml)
|
||||
srcs += code.process(gestures_xml)
|
||||
@@ -90,7 +88,6 @@ srcs += code.process(xdg_shell_xml)
|
||||
srcs += code.process(drm_lease_xml)
|
||||
srcs += code.process(shortcuts_inhibit_xml)
|
||||
srcs += code.process(xwayland_shell_xml)
|
||||
-srcs += code.process(tearing_xml)
|
||||
|
||||
if build_ei
|
||||
xwayland_dep += libei_dep
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 941be06da..bb3310dc9 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,9 +34,8 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
|
||||
-#define XWL_PRESENT_CAPS PresentCapabilityAsync | PresentCapabilityAsyncMayTear
|
||||
+#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
|
||||
|
||||
/*
|
||||
@@ -797,16 +796,6 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
damage_box->x2 - damage_box->x1,
|
||||
damage_box->y2 - damage_box->y1);
|
||||
|
||||
- if (xwl_window->tearing_control) {
|
||||
- uint32_t hint;
|
||||
- if (event->async_may_tear)
|
||||
- hint = WP_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC;
|
||||
- else
|
||||
- hint = WP_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC;
|
||||
-
|
||||
- wp_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control, hint);
|
||||
- }
|
||||
-
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
if (!vblank->sync_flip) {
|
||||
@@ -1010,15 +999,11 @@ xwl_present_pixmap(WindowPtr window,
|
||||
}
|
||||
|
||||
vblank->event_id = ++xwl_present_event_id;
|
||||
- event->async_may_tear = options & PresentOptionAsyncMayTear;
|
||||
|
||||
- /* Synchronous Xwayland presentations always complete (at least) one frame after they
|
||||
+ /* Xwayland presentations always complete (at least) one frame after they
|
||||
* are executed
|
||||
*/
|
||||
- if (event->async_may_tear)
|
||||
- vblank->exec_msc = vblank->target_msc;
|
||||
- else
|
||||
- vblank->exec_msc = vblank->target_msc - 1;
|
||||
+ vblank->exec_msc = vblank->target_msc - 1;
|
||||
|
||||
vblank->queued = TRUE;
|
||||
if (crtc_msc < vblank->exec_msc) {
|
||||
diff --git a/hw/xwayland/xwayland-present.h b/hw/xwayland/xwayland-present.h
|
||||
index 4fd1e579f..806272089 100644
|
||||
--- a/hw/xwayland/xwayland-present.h
|
||||
+++ b/hw/xwayland/xwayland-present.h
|
||||
@@ -59,7 +59,6 @@ struct xwl_present_event {
|
||||
present_vblank_rec vblank;
|
||||
|
||||
PixmapPtr pixmap;
|
||||
- Bool async_may_tear;
|
||||
};
|
||||
|
||||
Bool xwl_present_entered_for_each_frame_callback(void);
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index cc14e0771..2bc553b50 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -63,7 +63,6 @@
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
static DevPrivateKeyRec xwl_client_private_key;
|
||||
@@ -462,10 +461,6 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
xwl_screen->xwayland_shell =
|
||||
wl_registry_bind(registry, id, &xwayland_shell_v1_interface, 1);
|
||||
}
|
||||
- else if (strcmp(interface, "wp_tearing_control_manager_v1") == 0) {
|
||||
- xwl_screen->tearing_control_manager =
|
||||
- wl_registry_bind(registry, id, &wp_tearing_control_manager_v1_interface, 1);
|
||||
- }
|
||||
#ifdef XWL_HAS_GLAMOR
|
||||
else if (xwl_screen->glamor) {
|
||||
xwl_glamor_init_wl_registry(xwl_screen, registry, id, interface,
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index bd66dd681..656d2afde 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -110,7 +110,6 @@ struct xwl_screen {
|
||||
struct zxdg_output_manager_v1 *xdg_output_manager;
|
||||
struct wp_viewporter *viewporter;
|
||||
struct xwayland_shell_v1 *xwayland_shell;
|
||||
- struct wp_tearing_control_manager_v1 *tearing_control_manager;
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index a4f02a058..54ba9d896 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -46,7 +46,6 @@
|
||||
#include "xwayland-shm.h"
|
||||
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
@@ -941,11 +940,6 @@ ensure_surface_for_window(WindowPtr window)
|
||||
xwl_window_check_resolution_change_emulation(xwl_window);
|
||||
}
|
||||
|
||||
- if (xwl_screen->tearing_control_manager) {
|
||||
- xwl_window->tearing_control = wp_tearing_control_manager_v1_get_tearing_control(
|
||||
- xwl_screen->tearing_control_manager, xwl_window->surface);
|
||||
- }
|
||||
-
|
||||
return TRUE;
|
||||
|
||||
err:
|
||||
@@ -1156,9 +1150,6 @@ xwl_unrealize_window(WindowPtr window)
|
||||
xwl_present_for_each_frame_callback(xwl_window, xwl_present_unrealize_window);
|
||||
#endif
|
||||
|
||||
- if (xwl_window->tearing_control)
|
||||
- wp_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
-
|
||||
release_wl_surface_for_window(xwl_window);
|
||||
xorg_list_del(&xwl_window->link_damage);
|
||||
xorg_list_del(&xwl_window->link_window);
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index 45ae16da0..92c700e41 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -121,7 +121,6 @@ struct xwl_window {
|
||||
struct xwl_dmabuf_feedback feedback;
|
||||
/* If TRUE, the window buffer format supports scanout with implicit modifier */
|
||||
Bool has_implicit_scanout_support;
|
||||
- struct wp_tearing_control_v1 *tearing_control;
|
||||
};
|
||||
|
||||
struct xwl_window *xwl_window_get(WindowPtr window);
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From 7e43bb1113e7732d587d783a8db7ae86aefdb04d Mon Sep 17 00:00:00 2001
|
||||
From: Joshua Ashton <joshua@froggi.es>
|
||||
Date: Wed, 24 Aug 2022 23:16:24 +0000
|
||||
Subject: [PATCH 2/4] xwayland: Implement tearing protocol
|
||||
|
||||
---
|
||||
hw/xwayland/meson.build | 3 +
|
||||
.../tearing-control-unstable-v1.xml | 142 ++++++++++++++++++
|
||||
hw/xwayland/xwayland-present.c | 11 ++
|
||||
hw/xwayland/xwayland-screen.c | 4 +
|
||||
hw/xwayland/xwayland-screen.h | 1 +
|
||||
hw/xwayland/xwayland-window.c | 11 ++
|
||||
hw/xwayland/xwayland-window.h | 1 +
|
||||
7 files changed, 173 insertions(+)
|
||||
create mode 100644 hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index fbdbb2458..d29e55d7d 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -46,6 +46,7 @@ dmabuf_xml = join_paths(protodir, 'unstable', 'linux-dmabuf', 'linux-dmabuf-unst
|
||||
viewporter_xml = join_paths(protodir, 'stable', 'viewporter', 'viewporter.xml')
|
||||
xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
+tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'tearing-control-unstable-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
|
||||
@@ -74,6 +75,7 @@ srcs += client_header.process(dmabuf_xml)
|
||||
srcs += client_header.process(viewporter_xml)
|
||||
srcs += client_header.process(xdg_shell_xml)
|
||||
srcs += client_header.process(drm_lease_xml)
|
||||
+srcs += client_header.process(tearing_xml)
|
||||
srcs += client_header.process(shortcuts_inhibit_xml)
|
||||
srcs += client_header.process(xwayland_shell_xml)
|
||||
srcs += code.process(relative_xml)
|
||||
@@ -86,6 +88,7 @@ srcs += code.process(dmabuf_xml)
|
||||
srcs += code.process(viewporter_xml)
|
||||
srcs += code.process(xdg_shell_xml)
|
||||
srcs += code.process(drm_lease_xml)
|
||||
+srcs += code.process(tearing_xml)
|
||||
srcs += code.process(shortcuts_inhibit_xml)
|
||||
srcs += code.process(xwayland_shell_xml)
|
||||
|
||||
diff --git a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml b/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
new file mode 100644
|
||||
index 000000000..ce130718e
|
||||
--- /dev/null
|
||||
+++ b/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
@@ -0,0 +1,142 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<protocol name="zwp_tearing_control_unstable_v1">
|
||||
+
|
||||
+ <copyright>
|
||||
+ Copyright © 2021 Xaver Hugl
|
||||
+
|
||||
+ 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>
|
||||
+
|
||||
+ <interface name="zwp_tearing_control_v1" version="1">
|
||||
+ <description summary="protocol for tearing control">
|
||||
+ This global is a factory interface, allowing clients to request
|
||||
+ the compositor to use asynchronous page flips on a per-surface basis.
|
||||
+
|
||||
+ 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 tearing_control_exists protocol error.
|
||||
+
|
||||
+ 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.
|
||||
+ Backward incompatible changes are done by bumping the version number in
|
||||
+ the protocol and interface names and resetting the interface version.
|
||||
+ Once the protocol is to be declared stable, the 'z' prefix and the
|
||||
+ version number in the protocol and interface names are removed and the
|
||||
+ interface version number is reset.
|
||||
+ </description>
|
||||
+
|
||||
+ <request name="destroy" type="destructor">
|
||||
+ <description summary="destroy tearing control factory object">
|
||||
+ Destroy this tearing control factory object. Other objects, including
|
||||
+ zwp_surface_tearing_control_v1 objects created by this factory,
|
||||
+ shall not be affected by this request.
|
||||
+ </description>
|
||||
+ </request>
|
||||
+
|
||||
+ <enum name="error">
|
||||
+ <entry name="tearing_control_exists" value="0"
|
||||
+ summary="the surface already has a tearing object associated"/>
|
||||
+ </enum>
|
||||
+
|
||||
+ <request name="get_tearing_control">
|
||||
+ <description summary="extend surface interface for tearing control">
|
||||
+ Instantiate an interface extension for the given wl_surface to
|
||||
+ request asynchronous page flips for presentation.
|
||||
+
|
||||
+ If the given wl_surface already has a zwp_surface_tearing_control_v1
|
||||
+ object associated, the tearing_control_exists protocol error is raised.
|
||||
+ </description>
|
||||
+
|
||||
+ <arg name="id" type="new_id"
|
||||
+ interface="zwp_surface_tearing_control_v1"
|
||||
+ summary="the new surface tearing interface id"/>
|
||||
+ <arg name="surface" type="object" interface="wl_surface"
|
||||
+ summary="the surface"/>
|
||||
+ </request>
|
||||
+ </interface>
|
||||
+
|
||||
+ <interface name="zwp_surface_tearing_control_v1" version="1">
|
||||
+ <description summary="per-surface tearing control request">
|
||||
+ An additional interface to a wl_surface object, which allows the client
|
||||
+ to hint to the compositor if and when it should use asynchronous page
|
||||
+ flips for presentation.
|
||||
+ </description>
|
||||
+
|
||||
+ <enum name="presentation_hint">
|
||||
+ <description summary="presentation hint values">
|
||||
+ This enum provides information for if and when submitted frames from
|
||||
+ the client may be presented with tearing. The possible values are:
|
||||
+
|
||||
+ VSYNC:
|
||||
+ Presentation should be synchronized to the vertical retrace by the
|
||||
+ display hardware so that tearing doesn't happen.
|
||||
+
|
||||
+ VSYNC_RELAXED:
|
||||
+ Presentation should be synchronized to the vertical retrace by the
|
||||
+ display hardware so that tearing doesn't happen as long as the client
|
||||
+ submits new frame fast enough. If a frame is late for presentation,
|
||||
+ that is, if more than one vertical retrace has occurred since the last
|
||||
+ commit then the compositor should use asynchronous page flips to
|
||||
+ immediately present the frame. This may cause visible tearing.
|
||||
+ The compositor is encouraged to send requested frame callbacks as soon
|
||||
+ as possible after such a late commit to make sure clients have as much
|
||||
+ time as possible to render their next frame.
|
||||
+
|
||||
+ ASYNC:
|
||||
+ Presentation should not be synchronized to the vertical retrace,
|
||||
+ committed frames are meant to be immediately presented with asynchronous
|
||||
+ page flips with as little delay as possible. Tearing will be visible.
|
||||
+ The compositor is encouraged to send requested frame callbacks as soon
|
||||
+ as possible after every commit.
|
||||
+ </description>
|
||||
+ <entry name="vsync" value="0"
|
||||
+ summary="tearing-free presentation"/>
|
||||
+ <entry name="vsync_relaxed" value="1"
|
||||
+ summary="async pageflips on missed presentation deadline"/>
|
||||
+ <entry name="async" value="2"
|
||||
+ summary="async pageflips for all frames"/>
|
||||
+ </enum>
|
||||
+
|
||||
+ <request name="set_presentation_hint">
|
||||
+ <description summary="set presentation hint">
|
||||
+ Set the presentation hint for the associated wl_surface. See
|
||||
+ presentation_hint for the description. This state is double-buffered
|
||||
+ and is applied on the next wl_surface.commit.
|
||||
+
|
||||
+ The compositor is free to dynamically respect or ignore this hint based
|
||||
+ on various conditions, including GPU capabilities and surface window
|
||||
+ state.
|
||||
+ </description>
|
||||
+ <arg name="hint" type="uint" enum="presentation_hint"/>
|
||||
+ </request>
|
||||
+
|
||||
+ <request name="destroy" type="destructor">
|
||||
+ <description summary="destroy synchronization object">
|
||||
+ Destroy this surface tearing object and remove the presentation hint.
|
||||
+ The change will be applied on the next wl_surface.commit.
|
||||
+ </description>
|
||||
+ </request>
|
||||
+ </interface>
|
||||
+
|
||||
+</protocol>
|
||||
+
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index bb3310dc9..6f1d57a42 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,6 +34,8 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+
|
||||
|
||||
#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
|
||||
@@ -796,6 +798,15 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
damage_box->x2 - damage_box->x1,
|
||||
damage_box->y2 - damage_box->y1);
|
||||
|
||||
+
|
||||
+ // Josh: No support for VSync relaxed, this is something that should
|
||||
+ // be determined by a user setting in gamescope.
|
||||
+ if (xwl_window->tearing_control)
|
||||
+ zwp_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
+ sync_flip
|
||||
+ ? ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
+ : ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
+
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
if (!vblank->sync_flip) {
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index 2bc553b50..e35861e46 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -62,6 +62,7 @@
|
||||
#include "xdg-output-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
@@ -457,6 +458,9 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
else if (strcmp(interface, "wp_viewporter") == 0) {
|
||||
xwl_screen->viewporter = wl_registry_bind(registry, id, &wp_viewporter_interface, 1);
|
||||
}
|
||||
+ else if (strcmp(interface, "zwp_tearing_control_v1") == 0) {
|
||||
+ xwl_screen->tearing_control = wl_registry_bind(registry, id, &zwp_tearing_control_v1_interface, 1);
|
||||
+ }
|
||||
else if (strcmp(interface, "xwayland_shell_v1") == 0 && xwl_screen->rootless) {
|
||||
xwl_screen->xwayland_shell =
|
||||
wl_registry_bind(registry, id, &xwayland_shell_v1_interface, 1);
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index 656d2afde..bf75278fd 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -113,6 +113,7 @@ struct xwl_screen {
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
+ struct zwp_tearing_control_v1 *tearing_control;
|
||||
struct xwl_output *fixed_output;
|
||||
struct xorg_list pending_wl_surface_destroy;
|
||||
uint64_t surface_association_serial;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index 54ba9d896..527f41c90 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
#define DELAYED_WL_SURFACE_DESTROY 1000 /* ms */
|
||||
@@ -894,6 +895,11 @@ ensure_surface_for_window(WindowPtr window)
|
||||
goto err;
|
||||
}
|
||||
|
||||
+ if (xwl_screen->tearing_control) {
|
||||
+ xwl_window->tearing_control =
|
||||
+ zwp_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
+ }
|
||||
+
|
||||
if (xwl_screen->xwayland_shell) {
|
||||
xwl_window->xwayland_surface = xwayland_shell_v1_get_xwayland_surface(
|
||||
xwl_screen->xwayland_shell, xwl_window->surface);
|
||||
@@ -1143,6 +1149,11 @@ xwl_unrealize_window(WindowPtr window)
|
||||
if (xwl_window_has_viewport_enabled(xwl_window))
|
||||
xwl_window_disable_viewport(xwl_window);
|
||||
|
||||
+ if (xwl_window->tearing_control) {
|
||||
+ zwp_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
+ xwl_window->tearing_control = NULL;
|
||||
+ }
|
||||
+
|
||||
xwl_dmabuf_feedback_destroy(&xwl_window->feedback);
|
||||
|
||||
#ifdef GLAMOR_HAS_GBM
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index 92c700e41..efbb1f2fc 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -99,6 +99,7 @@ struct xwl_window {
|
||||
struct wp_viewport *viewport;
|
||||
float scale_x, scale_y;
|
||||
struct xdg_surface *xdg_surface;
|
||||
+ struct zwp_surface_tearing_control_v1 *tearing_control;
|
||||
struct xdg_toplevel *xdg_toplevel;
|
||||
WindowPtr window;
|
||||
struct xorg_list link_damage;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From ac5a78ddabf16b6876bf286e93d770f50d8e9315 Mon Sep 17 00:00:00 2001
|
||||
From: Joshua Ashton <joshua@froggi.es>
|
||||
Date: Wed, 31 Aug 2022 12:57:09 +0000
|
||||
Subject: [PATCH 3/4] Use gamescope tearing protocol instead
|
||||
|
||||
Renamed to not clash
|
||||
---
|
||||
hw/xwayland/meson.build | 2 +-
|
||||
...xml => gamescope-tearing-control-unstable-v1.xml} | 12 ++++++------
|
||||
hw/xwayland/xwayland-present.c | 8 ++++----
|
||||
hw/xwayland/xwayland-screen.c | 6 +++---
|
||||
hw/xwayland/xwayland-screen.h | 2 +-
|
||||
hw/xwayland/xwayland-window.c | 6 +++---
|
||||
hw/xwayland/xwayland-window.h | 2 +-
|
||||
7 files changed, 19 insertions(+), 19 deletions(-)
|
||||
rename hw/xwayland/protocols/unstable/tearing-control/{tearing-control-unstable-v1.xml => gamescope-tearing-control-unstable-v1.xml} (93%)
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index d29e55d7d..73f2bdd94 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -46,7 +46,7 @@ dmabuf_xml = join_paths(protodir, 'unstable', 'linux-dmabuf', 'linux-dmabuf-unst
|
||||
viewporter_xml = join_paths(protodir, 'stable', 'viewporter', 'viewporter.xml')
|
||||
xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
-tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'tearing-control-unstable-v1.xml')
|
||||
+tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'gamescope-tearing-control-unstable-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
|
||||
diff --git a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
similarity index 93%
|
||||
rename from hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
rename to hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
index ce130718e..3c7cfb09e 100644
|
||||
--- a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
+++ b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
-<protocol name="zwp_tearing_control_unstable_v1">
|
||||
+<protocol name="gamescope_tearing_control_unstable_v1">
|
||||
|
||||
<copyright>
|
||||
Copyright © 2021 Xaver Hugl
|
||||
@@ -24,7 +24,7 @@
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
- <interface name="zwp_tearing_control_v1" version="1">
|
||||
+ <interface name="gamescope_tearing_control_v1" version="1">
|
||||
<description summary="protocol for tearing control">
|
||||
This global is a factory interface, allowing clients to request
|
||||
the compositor to use asynchronous page flips on a per-surface basis.
|
||||
@@ -48,7 +48,7 @@
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy tearing control factory object">
|
||||
Destroy this tearing control factory object. Other objects, including
|
||||
- zwp_surface_tearing_control_v1 objects created by this factory,
|
||||
+ gamescope_surface_tearing_control_v1 objects created by this factory,
|
||||
shall not be affected by this request.
|
||||
</description>
|
||||
</request>
|
||||
@@ -63,19 +63,19 @@
|
||||
Instantiate an interface extension for the given wl_surface to
|
||||
request asynchronous page flips for presentation.
|
||||
|
||||
- If the given wl_surface already has a zwp_surface_tearing_control_v1
|
||||
+ If the given wl_surface already has a gamescope_surface_tearing_control_v1
|
||||
object associated, the tearing_control_exists protocol error is raised.
|
||||
</description>
|
||||
|
||||
<arg name="id" type="new_id"
|
||||
- interface="zwp_surface_tearing_control_v1"
|
||||
+ interface="gamescope_surface_tearing_control_v1"
|
||||
summary="the new surface tearing interface id"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"
|
||||
summary="the surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
- <interface name="zwp_surface_tearing_control_v1" version="1">
|
||||
+ <interface name="gamescope_surface_tearing_control_v1" version="1">
|
||||
<description summary="per-surface tearing control request">
|
||||
An additional interface to a wl_surface object, which allows the client
|
||||
to hint to the compositor if and when it should use asynchronous page
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 6f1d57a42..5cbd767c9 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,7 +34,7 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
|
||||
|
||||
#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
@@ -802,10 +802,10 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
// Josh: No support for VSync relaxed, this is something that should
|
||||
// be determined by a user setting in gamescope.
|
||||
if (xwl_window->tearing_control)
|
||||
- zwp_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
+ gamescope_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
sync_flip
|
||||
- ? ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
- : ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
+ ? GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
+ : GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index e35861e46..2a025db18 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -62,7 +62,7 @@
|
||||
#include "xdg-output-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
@@ -458,8 +458,8 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
else if (strcmp(interface, "wp_viewporter") == 0) {
|
||||
xwl_screen->viewporter = wl_registry_bind(registry, id, &wp_viewporter_interface, 1);
|
||||
}
|
||||
- else if (strcmp(interface, "zwp_tearing_control_v1") == 0) {
|
||||
- xwl_screen->tearing_control = wl_registry_bind(registry, id, &zwp_tearing_control_v1_interface, 1);
|
||||
+ else if (strcmp(interface, "gamescope_tearing_control_v1") == 0) {
|
||||
+ xwl_screen->tearing_control = wl_registry_bind(registry, id, &gamescope_tearing_control_v1_interface, 1);
|
||||
}
|
||||
else if (strcmp(interface, "xwayland_shell_v1") == 0 && xwl_screen->rootless) {
|
||||
xwl_screen->xwayland_shell =
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index bf75278fd..d6b1a1d84 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -113,7 +113,7 @@ struct xwl_screen {
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
- struct zwp_tearing_control_v1 *tearing_control;
|
||||
+ struct gamescope_tearing_control_v1 *tearing_control;
|
||||
struct xwl_output *fixed_output;
|
||||
struct xorg_list pending_wl_surface_destroy;
|
||||
uint64_t surface_association_serial;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index 527f41c90..3e42eb1c0 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -48,7 +48,7 @@
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
#define DELAYED_WL_SURFACE_DESTROY 1000 /* ms */
|
||||
@@ -897,7 +897,7 @@ ensure_surface_for_window(WindowPtr window)
|
||||
|
||||
if (xwl_screen->tearing_control) {
|
||||
xwl_window->tearing_control =
|
||||
- zwp_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
+ gamescope_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
}
|
||||
|
||||
if (xwl_screen->xwayland_shell) {
|
||||
@@ -1150,7 +1150,7 @@ xwl_unrealize_window(WindowPtr window)
|
||||
xwl_window_disable_viewport(xwl_window);
|
||||
|
||||
if (xwl_window->tearing_control) {
|
||||
- zwp_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
+ gamescope_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
xwl_window->tearing_control = NULL;
|
||||
}
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index efbb1f2fc..f62a7f1bd 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -99,7 +99,7 @@ struct xwl_window {
|
||||
struct wp_viewport *viewport;
|
||||
float scale_x, scale_y;
|
||||
struct xdg_surface *xdg_surface;
|
||||
- struct zwp_surface_tearing_control_v1 *tearing_control;
|
||||
+ struct gamescope_surface_tearing_control_v1 *tearing_control;
|
||||
struct xdg_toplevel *xdg_toplevel;
|
||||
WindowPtr window;
|
||||
struct xorg_list link_damage;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From c1451e6720b20505b7ce4fef3294a493fe4fe312 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Gospodnetich <me@kylegospodneti.ch>
|
||||
Date: Wed, 31 Jan 2024 17:36:04 -0800
|
||||
Subject: [PATCH 4/4] Fix missing sync_flip param
|
||||
|
||||
---
|
||||
hw/xwayland/xwayland-present.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 5cbd767c9..f22e8f987 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -754,7 +754,7 @@ xwl_present_clear_window_flip(WindowPtr window)
|
||||
}
|
||||
|
||||
static Bool
|
||||
-xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
+xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage, Bool sync_flip)
|
||||
{
|
||||
WindowPtr present_window = vblank->window;
|
||||
PixmapPtr pixmap = vblank->pixmap;
|
||||
@@ -873,7 +873,7 @@ xwl_present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
|
||||
} else
|
||||
damage = RegionDuplicate(&window->clipList);
|
||||
|
||||
- if (xwl_present_flip(vblank, damage)) {
|
||||
+ if (xwl_present_flip(vblank, damage, vblank->sync_flip)) {
|
||||
WindowPtr toplvl_window = xwl_present_toplvl_pixmap_window(vblank->window);
|
||||
PixmapPtr old_pixmap = screen->GetWindowPixmap(window);
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,279 +0,0 @@
|
||||
%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}.bazzite.{{{ git_dir_version }}}
|
||||
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
|
||||
|
||||
Patch1: 0001-Valve.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).
|
@ -8,7 +8,7 @@
|
||||
|
||||
Summary: Xwayland
|
||||
Name: xorg-x11-server-Xwayland
|
||||
%global xwayland_version 23.2.4
|
||||
%global xwayland_version 23.2.6
|
||||
Version: %{xwayland_version}.bazzite.{{{ git_dir_version }}}
|
||||
Release: 1%{?gitdate:.%{gitdate}git%{shortcommit}}%{?dist}
|
||||
|
||||
@ -19,7 +19,8 @@ Source0: https://gitlab.freedesktop.org/xorg/%{pkgname}/-/archive/%{commit}/%{
|
||||
Source0: https://www.x.org/pub/individual/xserver/%{pkgname}-%{xwayland_version}.tar.xz
|
||||
%endif
|
||||
|
||||
Patch1: 0001-Valve.patch
|
||||
Patch0: xwayland-pointer-warp-fix.patch
|
||||
Patch1: 0001-xwayland-Send-ei_device_frame-on-device_scroll_discr.patch
|
||||
|
||||
License: MIT
|
||||
|
||||
@ -95,7 +96,7 @@ Xwayland is an X server for running X clients under Wayland.
|
||||
%package devel
|
||||
Summary: Development package
|
||||
Requires: pkgconfig
|
||||
Requires: %{name}%{?_isa} = %{xwayland_version}-%{release}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The development package provides the developmental files which are
|
||||
@ -106,10 +107,10 @@ necessary for developing Wayland compositors using Xwayland.
|
||||
|
||||
%build
|
||||
%meson \
|
||||
%{?gitdate:-Dxwayland=true -D{xorg,xnest,xvfb,udev}=false} \
|
||||
%{?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}" \
|
||||
-Dbuilder_string="Build ID: %{name} %{version}-%{release}" \
|
||||
-Dxkb_output_dir=%{_localstatedir}/lib/xkb \
|
||||
-Dserverconfigdir=%{_datadir}/xwayland \
|
||||
-Dxcsecurity=true \
|
||||
@ -140,6 +141,19 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
||||
%{_libdir}/pkgconfig/xwayland.pc
|
||||
|
||||
%changelog
|
||||
* Tue Apr 09 2024 Olivier Fourdan <ofourdan@redhat.com> - 23.2.6-1
|
||||
- xwayland 23.2.6 - (#2273002)
|
||||
|
||||
* Wed Apr 03 2024 José Expósito <jexposit@redhat.com> - 23.2.5-1
|
||||
- CVE fix for: CVE-2024-31080, CVE-2024-31081, CVE-2024-31082 and
|
||||
CVE-2024-31083
|
||||
|
||||
* Mon Jan 29 2024 Florian Weimer <fweimer@redhat.com> - 23.2.4-3
|
||||
- Fix C compatibility issue on i686
|
||||
|
||||
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 23.2.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Tue Jan 16 2024 Olivier Fourdan <ofourdan@redhat.com> - 23.2.4-1
|
||||
- xwayland 23.2.4 - (#2254280)
|
||||
CVE fix for: CVE-2023-6816, CVE-2024-0229, CVE-2024-21885, CVE-2024-21886,
|
||||
|
@ -0,0 +1,35 @@
|
||||
From fdc71a08f059d2466e39968652c3df71cc582b3e Mon Sep 17 00:00:00 2001
|
||||
From: GloriousEggroll <gloriouseggroll@gmail.com>
|
||||
Date: Sun, 21 May 2023 03:34:46 -0600
|
||||
Subject: [PATCH] xwayland pointer warp fix
|
||||
|
||||
---
|
||||
hw/xwayland/xwayland-input.c | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
|
||||
index 34dd3c8..f7fa737 100644
|
||||
--- a/hw/xwayland/xwayland-input.c
|
||||
+++ b/hw/xwayland/xwayland-input.c
|
||||
@@ -3202,9 +3202,6 @@ xwl_seat_emulate_pointer_warp(struct xwl_seat *xwl_seat,
|
||||
if (!xwl_seat_can_emulate_pointer_warp(xwl_seat))
|
||||
return;
|
||||
|
||||
- if (xwl_seat->x_cursor != NULL)
|
||||
- return;
|
||||
-
|
||||
if (!xwl_seat->pointer_warp_emulator)
|
||||
xwl_seat_create_pointer_warp_emulator(xwl_seat);
|
||||
|
||||
@@ -3215,6 +3212,8 @@ xwl_seat_emulate_pointer_warp(struct xwl_seat *xwl_seat,
|
||||
xwl_window,
|
||||
sprite,
|
||||
x, y);
|
||||
+ if (xwl_seat->x_cursor != NULL)
|
||||
+ xwl_seat_destroy_pointer_warp_emulator(xwl_seat);
|
||||
}
|
||||
|
||||
static Bool
|
||||
--
|
||||
2.40.1
|
||||
|
@ -0,0 +1 @@
|
||||
ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="/usr/bin/cec-control onboot"
|
Loading…
x
Reference in New Issue
Block a user