summaryrefslogtreecommitdiff
path: root/x11-wm
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2020-11-16 03:52:30 +0000
committerJan Beich <jbeich@FreeBSD.org>2020-11-16 03:52:30 +0000
commite7b07b5e778b0431e4b69f97b9c217b60e9c6dc8 (patch)
treee6110b591f721ef5731b108c3bf381e378847afe /x11-wm
parentscience/libcint: Update 4.0.5 -> 4.0.6 (diff)
x11-wm/gamescope: add new port
In an embedded session usecase, gamescope does the same thing as steamcompmgr, but with less extra copies and latency: - It's getting game frames through Wayland by way of Xwayland, so there's no copy within X itself before it gets the frame. - It can use DRM/KMS to directly flip game frames to the screen, even when stretching or when notifications are up, removing another copy. - When it does need to composite with the GPU, it does so with async Vulkan compute, meaning you get to see your frame quick even if the game already has the GPU busy with the next frame. It also runs on top of a regular desktop, the 'nested' usecase steamcompmgr didn't support. - Because the game is running in its own personal Xwayland sandbox desktop, it can't interfere with your desktop and your desktop can't interfere with it. - You can spoof a virtual screen with a desired resolution and refresh rate as the only thing the game sees, and control/resize the output as needed. This can be useful in exotic display configurations like ultrawide or multi-monitor setups that involve rotation. https://github.com/Plagman/gamescope
Notes
Notes: svn path=/head/; revision=555448
Diffstat (limited to 'x11-wm')
-rw-r--r--x11-wm/Makefile1
-rw-r--r--x11-wm/gamescope/Makefile41
-rw-r--r--x11-wm/gamescope/distinfo15
-rw-r--r--x11-wm/gamescope/files/patch-private-libs27
-rw-r--r--x11-wm/gamescope/pkg-descr23
-rw-r--r--x11-wm/gamescope/pkg-message9
6 files changed, 116 insertions, 0 deletions
diff --git a/x11-wm/Makefile b/x11-wm/Makefile
index fa8dbfc3a664..f64b130ebf33 100644
--- a/x11-wm/Makefile
+++ b/x11-wm/Makefile
@@ -40,6 +40,7 @@
SUBDIR += fluxter
SUBDIR += flwm
SUBDIR += fvwm2
+ SUBDIR += gamescope
SUBDIR += gcompmgr
SUBDIR += herbstluftwm
SUBDIR += hikari
diff --git a/x11-wm/gamescope/Makefile b/x11-wm/gamescope/Makefile
new file mode 100644
index 000000000000..012f6611a05e
--- /dev/null
+++ b/x11-wm/gamescope/Makefile
@@ -0,0 +1,41 @@
+# $FreeBSD$
+
+PORTNAME= gamescope
+DISTVERSION= 3.7.1
+CATEGORIES= x11-wm
+
+PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
+PATCHFILES+= 56a1378c3643.patch:-p1 # https://github.com/Plagman/gamescope/pull/119
+PATCHFILES+= 620f8f5bc530.patch:-p1 # https://github.com/Plagman/gamescope/pull/119
+PATCHFILES+= 892d79b0f37e.patch:-p1 # https://github.com/Plagman/gamescope/pull/119
+PATCHFILES+= ae60c865d9d8.patch:-p1 # https://github.com/Plagman/gamescope/pull/119
+PATCHFILES+= d59836199ebe.patch:-p1 # https://github.com/Plagman/gamescope/issues/120
+
+MAINTAINER= jbeich@FreeBSD.org
+COMMENT= Micro-compositor from SteamOS
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= glslangValidator:devel/glslang \
+ evdev-proto>0:devel/evdev-proto \
+ vulkan-headers>0:devel/vulkan-headers \
+ wayland-protocols>=1.17:graphics/wayland-protocols \
+ wlroots>=0.11.0:x11-toolkits/wlroots
+LIB_DEPENDS= libepoll-shim.so:devel/libepoll-shim \
+ libdrm.so:graphics/libdrm \
+ libvulkan.so:graphics/vulkan-loader \
+ libwayland-server.so:graphics/wayland \
+ libwlroots.so:x11-toolkits/wlroots \
+ libxkbcommon.so:x11/libxkbcommon
+
+USES= compiler:c++11-lib meson pkgconfig sdl xorg
+USE_GITHUB= yes
+USE_SDL= sdl2
+USE_XORG= x11 xcomposite xdamage xext xfixes xrender xtst xxf86vm
+GH_ACCOUNT= Plagman
+GH_TUPLE= emersion:libliftoff:24abeb9:libliftoff/subprojects/libliftoff
+CPPFLAGS+= -D_WITH_DPRINTF # XXX Remove after FreeBSD 11 EOL
+PLIST_FILES= bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/x11-wm/gamescope/distinfo b/x11-wm/gamescope/distinfo
new file mode 100644
index 000000000000..4989ae4c8251
--- /dev/null
+++ b/x11-wm/gamescope/distinfo
@@ -0,0 +1,15 @@
+TIMESTAMP = 1605248074
+SHA256 (Plagman-gamescope-3.7.1_GH0.tar.gz) = 044f7969b796e678415ca7762fb21c04ecb331660b442b4fdcc389410ef36c6f
+SIZE (Plagman-gamescope-3.7.1_GH0.tar.gz) = 61673
+SHA256 (emersion-libliftoff-24abeb9_GH0.tar.gz) = cb33c0c9a5d50c9c825f01ff045ff4ad316e7e73850331a12c6d444b3e949323
+SIZE (emersion-libliftoff-24abeb9_GH0.tar.gz) = 25849
+SHA256 (56a1378c3643.patch) = 92c2261d2dfa2b46f1f837afa1e57a6aa24df637d51ef67b4ce8df0de904d0a2
+SIZE (56a1378c3643.patch) = 2777
+SHA256 (620f8f5bc530.patch) = f7d35a7c520fe00939ccb7b14648980ebfb32ee94c3991a0d9f6c71d12861611
+SIZE (620f8f5bc530.patch) = 2709
+SHA256 (892d79b0f37e.patch) = 7382fde23d3fe51ee84debdba478bfff48c8f889e78b71d088b3900239ced176
+SIZE (892d79b0f37e.patch) = 1596
+SHA256 (ae60c865d9d8.patch) = 41593e80d11a80c17a173cd03330738fc9deb82626c6788e15ab1895bf68111d
+SIZE (ae60c865d9d8.patch) = 1111
+SHA256 (d59836199ebe.patch) = 40b519ef847b979ba088325cdd7170bed91936b79d845c65d2126b2b25166a1e
+SIZE (d59836199ebe.patch) = 2586
diff --git a/x11-wm/gamescope/files/patch-private-libs b/x11-wm/gamescope/files/patch-private-libs
new file mode 100644
index 000000000000..e2961b1e65e9
--- /dev/null
+++ b/x11-wm/gamescope/files/patch-private-libs
@@ -0,0 +1,27 @@
+libliftoff is untagged and has no other consumers. Keep it private to
+gamescope package for now.
+
+--- subprojects/libliftoff/meson.build.orig 2020-05-26 19:30:31 UTC
++++ subprojects/libliftoff/meson.build
+@@ -38,7 +38,7 @@ liftoff_lib = library(
+ include_directories: liftoff_inc,
+ version: meson.project_version(),
+ dependencies: liftoff_deps,
+- install: true,
++ install: not meson.is_subproject(),
+ )
+
+ liftoff = declare_dependency(
+@@ -47,6 +47,7 @@ liftoff = declare_dependency(
+ dependencies: liftoff_deps,
+ )
+
++if not meson.is_subproject()
+ install_headers('include/libliftoff.h')
+
+ pkgconfig = import('pkgconfig')
+@@ -60,3 +61,4 @@ pkgconfig.generate(
+
+ subdir('example')
+ subdir('test')
++endif
diff --git a/x11-wm/gamescope/pkg-descr b/x11-wm/gamescope/pkg-descr
new file mode 100644
index 000000000000..253c096247a3
--- /dev/null
+++ b/x11-wm/gamescope/pkg-descr
@@ -0,0 +1,23 @@
+In an embedded session usecase, gamescope does the same thing as
+steamcompmgr, but with less extra copies and latency:
+
+- It's getting game frames through Wayland by way of Xwayland, so
+ there's no copy within X itself before it gets the frame.
+- It can use DRM/KMS to directly flip game frames to the screen, even
+ when stretching or when notifications are up, removing another copy.
+- When it does need to composite with the GPU, it does so with async
+ Vulkan compute, meaning you get to see your frame quick even if the
+ game already has the GPU busy with the next frame.
+
+It also runs on top of a regular desktop, the 'nested' usecase
+steamcompmgr didn't support.
+
+- Because the game is running in its own personal Xwayland sandbox
+ desktop, it can't interfere with your desktop and your desktop can't
+ interfere with it.
+- You can spoof a virtual screen with a desired resolution and refresh
+ rate as the only thing the game sees, and control/resize the output
+ as needed. This can be useful in exotic display configurations like
+ ultrawide or multi-monitor setups that involve rotation.
+
+WWW: https://github.com/Plagman/gamescope
diff --git a/x11-wm/gamescope/pkg-message b/x11-wm/gamescope/pkg-message
new file mode 100644
index 000000000000..bf65b8143060
--- /dev/null
+++ b/x11-wm/gamescope/pkg-message
@@ -0,0 +1,9 @@
+[
+{ type: install
+ message: <<EOM
+Known issues:
+- Intel GPUs are not supported yet, see
+ https://github.com/Plagman/gamescope/issues/49
+EOM
+}
+]