Update to 23.1.2 & Updated patches & fix rendering on nvidia

This commit is contained in:
Ward Nakchbandi (Cosmic Fusion) 2023-07-14 18:06:35 +03:00 committed by GitHub
parent 3ac15b049d
commit 88fb26bde8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 47 additions and 1142 deletions

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
xwayland (2:23.1.1-99pika1.lunar) lunar; urgency=medium
xwayland (2:23.1.2-99pika1.lunar) lunar; urgency=medium
* Update to lunar

1
debian/control vendored
View File

@ -36,6 +36,7 @@ Depends:
xserver-common,
${shlibs:Depends},
${misc:Depends},
libnvidia-egl-wayland1,
Description: X server for running X clients under Wayland
This package provides an X server running on top of wayland, using wayland
input devices for input and forwarding either the root window or individual

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,2 @@
#xwayland-Detect-gbm_bo_get_fd_for_plane-at-runtime.patch
0001-xwayland-patch-fix-vsync.patch
xwayland-cursor-wrap-fix.patch

View File

@ -1,129 +0,0 @@
Description: xwayland: Detect gbm_bo_get_fd_for_plane at runtime
`gbm_bo_get_fd_for_plane` was introduced in Mesa 21 but some
proprietary GBM implementations (Xilinx) still haven't been updated
to support it:
```
/usr/bin/Xwayland: symbol lookup error: /usr/bin/Xwayland: undefined symbol: gbm_bo_get_fd_for_plane
```
.
Since distros would like to build a single Xwayland binary for all
OEMs of the same architecture, we now make the function always
available.
.
If a real implementation of `gbm_bo_get_fd_for_plane` exists at runtime
then it will be used, otherwise fall back to `gbm_bo_get_fd` or fail.
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Origin: https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/946
Bug-Ubuntu: https://launchpad.net/bugs/1987628
Forwarded: yes
Last-Update: 2022-08-25
Index: xorg/hw/xwayland/xwayland-glamor-gbm.c
===================================================================
--- xorg.orig/hw/xwayland/xwayland-glamor-gbm.c
+++ xorg/hw/xwayland/xwayland-glamor-gbm.c
@@ -32,6 +32,7 @@
#include <fcntl.h>
#include <errno.h>
+#include <dlfcn.h>
#include <sys/stat.h>
#include <xf86drm.h>
#include <drm_fourcc.h>
@@ -113,6 +114,33 @@ is_device_path_render_node (const char *
return is_render_node;
}
+static int (*real_gbm_bo_get_fd_for_plane)(struct gbm_bo *, int);
+
+static void
+init_gbm_abi(void)
+{
+ if (!real_gbm_bo_get_fd_for_plane) {
+ real_gbm_bo_get_fd_for_plane = dlsym(RTLD_NEXT,
+ "gbm_bo_get_fd_for_plane");
+ if (!real_gbm_bo_get_fd_for_plane)
+ LogMessageVerb(X_WARNING, 0,
+ "gbm_bo_get_fd_for_plane is not supported natively.\n");
+ }
+}
+
+static int
+xwl_gbm_bo_get_fd_for_plane(struct gbm_bo *bo, int plane)
+{
+ if (real_gbm_bo_get_fd_for_plane)
+ return real_gbm_bo_get_fd_for_plane(bo, plane);
+
+ if (plane == 0)
+ return gbm_bo_get_fd(bo);
+
+ errno = ENOSYS;
+ return -1;
+}
+
static PixmapPtr
xwl_glamor_gbm_create_pixmap_for_bo(ScreenPtr screen, struct gbm_bo *bo,
int depth)
@@ -120,7 +148,6 @@ xwl_glamor_gbm_create_pixmap_for_bo(Scre
PixmapPtr pixmap;
struct xwl_pixmap *xwl_pixmap;
struct xwl_screen *xwl_screen = xwl_screen_get(screen);
-#ifdef GBM_BO_FD_FOR_PLANE
struct xwl_gbm_private *xwl_gbm = xwl_gbm_get(xwl_screen);
uint64_t modifier = gbm_bo_get_modifier(bo);
const int num_planes = gbm_bo_get_plane_count(bo);
@@ -168,7 +195,6 @@ xwl_glamor_gbm_create_pixmap_for_bo(Scre
};
for (plane = 0; plane < num_planes; plane++) fds[plane] = -1;
-#endif
xwl_pixmap = calloc(1, sizeof(*xwl_pixmap));
if (xwl_pixmap == NULL)
@@ -188,7 +214,6 @@ xwl_glamor_gbm_create_pixmap_for_bo(Scre
xwl_pixmap->bo = bo;
xwl_pixmap->buffer = NULL;
-#ifdef GBM_BO_FD_FOR_PLANE
if (xwl_gbm->dmabuf_capable) {
#define ADD_ATTR(attrs, num, attr) \
do { \
@@ -203,7 +228,7 @@ xwl_glamor_gbm_create_pixmap_for_bo(Scre
ADD_ATTR(img_attrs, attr_num, gbm_bo_get_format(bo));
for (plane = 0; plane < num_planes; plane++) {
- fds[plane] = gbm_bo_get_fd_for_plane(bo, plane);
+ fds[plane] = xwl_gbm_bo_get_fd_for_plane(bo, plane);
ADD_ATTR(img_attrs, attr_num, planeAttrs[plane][PLANE_FD]);
ADD_ATTR(img_attrs, attr_num, fds[plane]);
ADD_ATTR(img_attrs, attr_num, planeAttrs[plane][PLANE_OFFSET]);
@@ -230,7 +255,6 @@ xwl_glamor_gbm_create_pixmap_for_bo(Scre
}
}
else
-#endif
{
xwl_pixmap->image = eglCreateImageKHR(xwl_screen->egl_display,
xwl_screen->egl_context,
@@ -1062,6 +1086,8 @@ xwl_glamor_init_gbm(struct xwl_screen *x
return;
}
+ init_gbm_abi();
+
dixSetPrivate(&xwl_screen->screen->devPrivates, &xwl_gbm_private_key,
xwl_gbm);
Index: xorg/include/meson.build
===================================================================
--- xorg.orig/include/meson.build
+++ xorg/include/meson.build
@@ -103,8 +103,6 @@ conf_data.set('GLAMOR_HAS_GBM_LINEAR',
build_glamor and gbm_dep.found() and gbm_dep.version().version_compare('>= 10.6') ? '1' : false)
conf_data.set('GBM_BO_WITH_MODIFIERS',
build_glamor and gbm_dep.found() and gbm_dep.version().version_compare('>= 17.1') ? '1' : false)
-conf_data.set('GBM_BO_FD_FOR_PLANE',
- build_glamor and gbm_dep.found() and gbm_dep.version().version_compare('>= 21.1') ? '1' : false)
conf_data.set_quoted('SERVER_MISC_CONFIG_PATH', serverconfigdir)
conf_data.set_quoted('PROJECTROOT', get_option('prefix'))

View File

@ -0,0 +1,34 @@
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

10
debian/rules vendored
View File

@ -9,8 +9,14 @@ SUPPORT = https://www.debian.org/support
override_dh_auto_configure:
dh_auto_configure -- \
-Dbuilder_addr="debian-x@lists.debian.org"
-Dbuilder_string="$(DEB_SOURCE) $(DEB_VERSION_UPSTREAM) ($(SUPPORT))"
-Dbuilder_addr="debian-x@lists.debian.org" \
-Dbuilder_string="$(DEB_SOURCE) $(DEB_VERSION_UPSTREAM) ($(SUPPORT))" \
-Dxkb_dir=/usr/share/X11/xkb \
-Dxkb_output_dir=/var/lib/xkb \
-Dxwayland_eglstream=true \
-Dxcsecurity=true \
-Dglamor=true \
-Ddri3=true
override_dh_auto_install:
dh_auto_install --destdir=debian/tmp

View File

@ -1,5 +1,5 @@
# Clone Upstream
git clone https://gitlab.freedesktop.org/xorg/xserver.git -b xwayland-23.1.1
git clone https://gitlab.freedesktop.org/xorg/xserver.git -b xwayland-23.1.2
cp -rvf ./debian ./xserver
mv ./xserver ./xwayland
cd ./xwayland
@ -8,7 +8,7 @@ cd ./xwayland
apt-get build-dep ./ -y
# Build package
LOGNAME=root dh_make --createorig -y -l -p xwayland_23.1.1
LOGNAME=root dh_make --createorig -y -l -p xwayland_23.1.2
dpkg-buildpackage
# Move the debs to output