svn commit: r555448 - in head/x11-wm: . gamescope gamescope/files
Jan Beich
jbeich at FreeBSD.org
Mon Nov 16 03:52:32 UTC 2020
Author: jbeich
Date: Mon Nov 16 03:52:30 2020
New Revision: 555448
URL: https://svnweb.freebsd.org/changeset/ports/555448
Log:
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
Added:
head/x11-wm/gamescope/
head/x11-wm/gamescope/Makefile (contents, props changed)
head/x11-wm/gamescope/distinfo (contents, props changed)
head/x11-wm/gamescope/files/
head/x11-wm/gamescope/files/patch-private-libs (contents, props changed)
head/x11-wm/gamescope/pkg-descr (contents, props changed)
head/x11-wm/gamescope/pkg-message (contents, props changed)
Modified:
head/x11-wm/Makefile (contents, props changed)
Modified: head/x11-wm/Makefile
==============================================================================
--- head/x11-wm/Makefile Mon Nov 16 03:30:33 2020 (r555447)
+++ head/x11-wm/Makefile Mon Nov 16 03:52:30 2020 (r555448)
@@ -40,6 +40,7 @@
SUBDIR += fluxter
SUBDIR += flwm
SUBDIR += fvwm2
+ SUBDIR += gamescope
SUBDIR += gcompmgr
SUBDIR += herbstluftwm
SUBDIR += hikari
Added: head/x11-wm/gamescope/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/x11-wm/gamescope/Makefile Mon Nov 16 03:52:30 2020 (r555448)
@@ -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 at 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>
Added: head/x11-wm/gamescope/distinfo
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/x11-wm/gamescope/distinfo Mon Nov 16 03:52:30 2020 (r555448)
@@ -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
Added: head/x11-wm/gamescope/files/patch-private-libs
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/x11-wm/gamescope/files/patch-private-libs Mon Nov 16 03:52:30 2020 (r555448)
@@ -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
Added: head/x11-wm/gamescope/pkg-descr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/x11-wm/gamescope/pkg-descr Mon Nov 16 03:52:30 2020 (r555448)
@@ -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
Added: head/x11-wm/gamescope/pkg-message
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/x11-wm/gamescope/pkg-message Mon Nov 16 03:52:30 2020 (r555448)
@@ -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
+}
+]
More information about the svn-ports-all
mailing list