Install

afmf-linux is a Vulkan implicit layer: once installed it is present in every Vulkan process but stays dormant until AFMF_ENABLE=1 is set for a game. Pick one route.

Packages

From the latest release, one file per system; the .asc and .sha256 next to each are the signature and checksum, not needed to install.

You run Download Install
Fedora 44 (Nobara, Bazzite and other Fedora-based) afmf-linux-<version>-1.fc44.x86_64.rpm sudo dnf install ./afmf-linux-<version>-1.fc44.x86_64.rpm
Debian 13 trixie and derivatives afmf-linux_<version>-1_amd64.trixie.deb sudo apt install ./afmf-linux_<version>-1_amd64.trixie.deb
Ubuntu 24.04 noble (Mint 22, Pop!_OS 24 and other 24.04-based) afmf-linux_<version>-1_amd64.noble.deb sudo apt install ./afmf-linux_<version>-1_amd64.noble.deb
Arch Linux (CachyOS, EndeavourOS, Manjaro) afmf-linux-<version>-1-x86_64.pkg.tar.zst sudo pacman -U afmf-linux-<version>-1-x86_64.pkg.tar.zst (or the AUR package afmf-linux)
Anything else (openSUSE, Gentoo, Void, Solus, NixOS by hand…) afmf-linux-<version>-x86_64.tar.xz tar xf afmf-linux-<version>-x86_64.tar.xz && afmf-linux-<version>/install.sh (installs under ~/.local, no root; --uninstall removes it)

The -debuginfo, -debugsource and -debug packages carry debugging symbols only: you do not need them to play, only to produce a backtrace for a bug report.

Every asset has a .sha256 and a detached .asc signature made with the project’s release key (packaging/afmf-linux-release-key.asc in the repository, certified by the maintainer’s keys):

gpg --import afmf-linux-release-key.asc
gpg --verify afmf-linux-<version>-x86_64.tar.xz.asc afmf-linux-<version>-x86_64.tar.xz

From source

Requirements: CMake 3.28+, Ninja or Make, GCC or Clang (C11), the Vulkan headers and loader, glslang; spirv-tools is optional and validates every shader.

# Fedora
sudo dnf install cmake ninja-build gcc vulkan-headers vulkan-loader-devel glslang spirv-tools
# Ubuntu / Debian
sudo apt install cmake ninja-build gcc libvulkan-dev glslang-tools spirv-tools
# Arch
sudo pacman -S cmake ninja gcc vulkan-headers vulkan-icd-loader glslang spirv-tools

git clone https://github.com/serialexperimentslainnnn/afmf-linux.git && cd afmf-linux
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
sudo cmake --install build --prefix /usr/local

To use it from the build tree without installing:

VK_ADD_IMPLICIT_LAYER_PATH=$PWD/build/layer AFMF_ENABLE=1 vkcube

Enable it for a game

Steam launch options, Proton or native:

AFMF_ENABLE=1 %command%

Any other launcher: put AFMF_ENABLE=1 in the game’s environment. DISABLE_AFMF=1 keeps the layer out of a process even when enabled, which is the quickest way to measure the base frame rate.

The settings closest to AMD’s “high search, blend” preset, with the log on:

AFMF_ENABLE=1 AFMF_SEARCH_MODE=high AFMF_FAST_MOTION_RESPONSE=blend AFMF_LOG=2 %command% 2>afmf.log

The log says what the layer decided for each swapchain; with AFMF_PROFILE=1 it also reports real fps, the time spent in the layer and the pacing hold. All variables are on the configuration page.

Check that it works

vulkaninfo --summary | grep VK_LAYER_AFMF          # the layer is installed
AFMF_ENABLE=1 AFMF_LOG=2 vkcube --present_mode 1   # "... generated ..." lines on stderr

In a game, MangoHud shows real + generated frames per second; the layer’s log shows how many of the presents got a companion.

Uninstall

Remove the package, or afmf-linux-<version>/install.sh --uninstall for the tarball, or delete libafmf-linux.so and afmf-linux.json from where cmake --install put them.