diff options
author | Jan Beich <jbeich@FreeBSD.org> | 2020-11-16 03:52:30 +0000 |
---|---|---|
committer | Jan Beich <jbeich@FreeBSD.org> | 2020-11-16 03:52:30 +0000 |
commit | e7b07b5e778b0431e4b69f97b9c217b60e9c6dc8 (patch) | |
tree | e6110b591f721ef5731b108c3bf381e378847afe /x11-wm | |
parent | science/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/Makefile | 1 | ||||
-rw-r--r-- | x11-wm/gamescope/Makefile | 41 | ||||
-rw-r--r-- | x11-wm/gamescope/distinfo | 15 | ||||
-rw-r--r-- | x11-wm/gamescope/files/patch-private-libs | 27 | ||||
-rw-r--r-- | x11-wm/gamescope/pkg-descr | 23 | ||||
-rw-r--r-- | x11-wm/gamescope/pkg-message | 9 |
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 +} +] |