github papi-ux/polaris v1.3.7
Polaris v1.3.7

3 hours ago

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 polaris

Arch 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 polaris

Ubuntu 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 polaris

Bazzite 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 +polhdr2 capability 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.zst
  • Polaris-fedora44-x86_64.rpm
  • Polaris-steamos3.8-x86_64.pkg.tar.zst
  • Polaris-ubuntu24.04-x86_64.deb

Don't miss a new polaris release

NewReleases is sending notifications on new releases.