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