Polaris v1.3.7
Polaris v1.3.7 fixes a use-after-free in VAAPI DMA-BUF capture that AMD hosts have been running into, and puts the nix packaging under CI for the first time.
Important: upgrading from v1.3.6
Nothing extra is required beyond the usual upgrade. The package, --setup-host, and restart sequence are unchanged.
If you are on an AMD GPU and capture through DRM/KMS, this is the release to take. The VAAPI VRAM converter could destroy an imported surface while a conversion was still reading it. The blanket VAAPI refusal in earlier releases covered only the gamescope windowed override, so DRM/KMS capture and the non-cage wlroots VRAM path were never behind it — those paths build the converter directly.
Fedora 44
wget --output-document=./Polaris-fedora44-x86_64.rpm https://github.com/papi-ux/polaris/releases/download/v1.3.7/Polaris-fedora44-x86_64.rpm &&
sudo dnf install "./Polaris-fedora44-x86_64.rpm" &&
sudo -H polaris --setup-host &&
systemctl --user restart polarisArch Linux / CachyOS
wget --output-document=./Polaris-arch-x86_64.pkg.tar.zst https://github.com/papi-ux/polaris/releases/download/v1.3.7/Polaris-arch-x86_64.pkg.tar.zst &&
sudo pacman -U ./Polaris-arch-x86_64.pkg.tar.zst &&
sudo -H polaris --setup-host &&
systemctl --user restart polarisUbuntu 24.04
wget --output-document=./Polaris-ubuntu24.04-x86_64.deb https://github.com/papi-ux/polaris/releases/download/v1.3.7/Polaris-ubuntu24.04-x86_64.deb &&
sudo apt install ./Polaris-ubuntu24.04-x86_64.deb &&
sudo -H polaris --setup-host &&
systemctl --user restart polarisBazzite users should follow the exact-output rpm-ostree flow in the Bazzite guide. SteamOS 3.8 already uses an exact output target and a read-only restoration trap; follow the SteamOS guide.
Changes
Capture and encoding
- Hardens the VAAPI DMA-BUF surface lifetime. The VRAM converter kept a single imported RGB surface; on a new frame it assigned an empty surface over it, destroying the EGLImage and texture, and only then imported the replacement — while an in-flight conversion could still be holding the old one. Imports now live in a two-slot buffer-keyed cache with the blank dummy surface kept separately, so a newly captured frame cannot destroy the surface an active conversion is using.
- Closes duplicated DMA-BUF descriptors once ownership transfers, and fails closed on an invalid surface or texture selection instead of converting it.
- The VAAPI refusal for the gamescope windowed GPU-native override stays in place. Removing it is gated on RDNA3 and RDNA4 field evidence and is not part of this release.
Nix packaging
- The gamescope-polaris patch stack and the packaged compositor stay in step, so the
+polhdr2capability stamp a session negotiates against is one a build has proved rather than one a patch claimed. - CI checks the vendored patch stacks on every push — every hunk header against its own body, every patch either applied or archived — and builds the patched compositor and the ScreenCast portal.
nix/had no CI coverage at all before this, so a patch that could not apply, or applied without taking effect, reached the repository with every check green.
Official assets
Polaris-arch-x86_64.pkg.tar.zstPolaris-fedora44-x86_64.rpmPolaris-steamos3.8-x86_64.pkg.tar.zstPolaris-ubuntu24.04-x86_64.deb