summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorkyechou2022-11-15 21:09:02 -0600
committerkyechou2022-11-15 21:09:02 -0600
commitdf11728849ccfdec64a5404be0e75cd98db5d287 (patch)
tree063bce33ac8abfa50b9634cc4e5117eb0c2491cd
downloadaur-df11728849ccfdec64a5404be0e75cd98db5d287.tar.gz
First commit
-rw-r--r--.SRCINFO41
-rw-r--r--PKGBUILD49
-rw-r--r--nvidia.patch37
3 files changed, 127 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..982806c01a5a
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,41 @@
+pkgbase = wlroots-nvidia-git
+ pkgdesc = Modular Wayland compositor library (git version with nvidia patches)
+ pkgver = 0.16.0.r58.g77d9fc08
+ pkgrel = 1
+ url = https://gitlab.freedesktop.org/wlroots/wlroots
+ arch = x86_64
+ license = MIT
+ makedepends = git
+ makedepends = glslang
+ makedepends = meson
+ makedepends = ninja
+ makedepends = systemd
+ makedepends = vulkan-headers
+ makedepends = wayland-protocols
+ makedepends = xorg-xwayland
+ depends = libglvnd
+ depends = libinput
+ depends = libudev.so
+ depends = libxcb
+ depends = libxkbcommon
+ depends = opengl-driver
+ depends = pixman
+ depends = wayland
+ depends = xcb-util-errors
+ depends = xcb-util-renderutil
+ depends = xcb-util-wm
+ depends = seatd
+ depends = vulkan-icd-loader
+ depends = vulkan-validation-layers
+ depends = xorg-xwayland
+ optdepends = xorg-xwayland: Xwayland support
+ provides = wlroots
+ provides = wlroots-git
+ conflicts = wlroots
+ conflicts = wlroots-git
+ source = wlroots-nvidia-git::git+https://gitlab.freedesktop.org/wlroots/wlroots.git
+ source = nvidia.patch
+ sha256sums = SKIP
+ sha256sums = ab3aabd4be34c9a4d7fef86be37aa6c971b1106fb2bf7d7651c809338aff298c
+
+pkgname = wlroots-nvidia-git
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..3789af9c238f
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,49 @@
+# Maintainer: Kuan-Yen Chou <kychou2@illinois.edu>
+
+pkgname=wlroots-nvidia-git
+pkgver=0.16.0.r58.g77d9fc08
+pkgrel=1
+pkgdesc='Modular Wayland compositor library (git version with nvidia patches)'
+depends=(libglvnd libinput libudev.so libxcb libxkbcommon opengl-driver pixman
+ wayland xcb-util-errors xcb-util-renderutil xcb-util-wm seatd
+ vulkan-icd-loader vulkan-validation-layers xorg-xwayland)
+makedepends=(git glslang meson ninja systemd vulkan-headers wayland-protocols
+ xorg-xwayland)
+optdepends=('xorg-xwayland: Xwayland support')
+arch=(x86_64)
+url="https://gitlab.freedesktop.org/wlroots/wlroots"
+license=(MIT)
+provides=(wlroots wlroots-git)
+conflicts=(wlroots wlroots-git)
+source=("$pkgname::git+https://gitlab.freedesktop.org/wlroots/wlroots.git"
+ "nvidia.patch")
+sha256sums=('SKIP'
+ 'ab3aabd4be34c9a4d7fef86be37aa6c971b1106fb2bf7d7651c809338aff298c')
+
+pkgver() {
+ cd "$srcdir/$pkgname"
+ if git describe --long --tags >/dev/null 2>&1; then
+ git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
+ else
+ printf 'r%s.%s' "$(git rev-list --count HEAD)" "$(git describe --always)"
+ fi
+}
+
+prepare() {
+ cd "$srcdir/$pkgname"
+ patch -Np0 -i "$srcdir/nvidia.patch"
+}
+
+build() {
+ cd "$srcdir/$pkgname"
+ arch-meson --buildtype=release -Dwerror=false -Dexamples=false . build
+ ninja -C build
+}
+
+package() {
+ cd "$srcdir/$pkgname"
+ DESTDIR="$pkgdir" ninja -C build install
+ install -Dm644 LICENSE -t "$pkgdir/usr/share/licenses/wlroots"
+}
+
+# vim: set sw=4 ts=4 et:
diff --git a/nvidia.patch b/nvidia.patch
new file mode 100644
index 000000000000..306324bd7c2f
--- /dev/null
+++ b/nvidia.patch
@@ -0,0 +1,37 @@
+--- render/gles2/renderer.c
++++ render/gles2/renderer.c
+@@ -165,7 +165,7 @@
+ assert(wlr_egl_is_current(renderer->egl));
+
+ push_gles2_debug(renderer);
+- glFlush();
++ glFinish();
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ pop_gles2_debug(renderer);
+
+--- types/output/render.c
++++ types/output/render.c
+@@ -327,22 +327,7 @@ struct wlr_drm_format *output_pick_format(struct wlr_output *output,
+ }
+
+ uint32_t wlr_output_preferred_read_format(struct wlr_output *output) {
+- struct wlr_renderer *renderer = output->renderer;
+- assert(renderer != NULL);
+-
+- if (!renderer->impl->preferred_read_format || !renderer->impl->read_pixels) {
+- return DRM_FORMAT_INVALID;
+- }
+-
+- if (!output_attach_back_buffer(output, &output->pending, NULL)) {
+- return false;
+- }
+-
+- uint32_t fmt = renderer->impl->preferred_read_format(renderer);
+-
+- output_clear_back_buffer(output);
+-
+- return fmt;
++ return DRM_FORMAT_XRGB8888;
+ }
+
+ bool output_is_direct_scanout(struct wlr_output *output,