Skip to content

2.0.0 Released

Latest

Choose a tag to compare

@pythonlover02 pythonlover02 released this 20 Aug 08:32
· 5 commits to main since this release

Read this first

2.0.0 is a full rewrite, not an update. volt is no longer a script that exports
environment variables, it is now a Vulkan implicit layer written in Rust that
rewrites the Vulkan calls a game makes.

Everything env var based is gone: the MangoHud, Gamescope, LSFG,
Proton/Wine, DXVK, VKD3D-Proton and GPU driver tabs, the OpenGL/Vulkan render
selector, and the generated volt shell script.

1.x profiles do not carry over. 1.x wrote .conf files; 2.0 uses one toml
per profile in ~/.config/volt-gui/. There is no import path, the settings
themselves no longer exist.

Remove 1.x before installing 2.0. 1.x installed into /usr/local/bin, 2.0
installs into /usr/bin, so neither uninstall target touches the other's
files. Use the next commands to remove 1.4.1:

sudo rm -f /usr/local/bin/volt /usr/local/bin/volt-gui /usr/local/bin/volt-helper
sudo rm -f /usr/share/applications/volt-gui.desktop
sudo update-desktop-database /usr/share/applications

Why the rewrite

The env var approach never held up. There is no standardization across Linux
driver stacks; a setting you can control on the NVIDIA proprietary driver often
has no equivalent on RADV, and the other way around. volt-gui ended up being a
front end for a maze of per driver variables that behaved differently depending
on what you happened to be running, even between versions of the same driver.

A Vulkan layer sits below all of that. It rewrites what the game asks Vulkan
for, so the same setting behaves the same way on RADV, ANV, NVK, AMDVLK and the
NVIDIA proprietary driver. Driver agnostic by construction.

2.0.0 Changes

  • volt is now a Vulkan implicit layer (VK_LAYER_VOLT_settings), written in
    Rust, applied through the volt launcher.
  • 19 settings across 5 tabs: GPU selection, display and swapchain, texture
    sampling, rendering toggles, and volt's own frame limiter.
  • Vulkan 1.0 is the floor and the ceiling. The layer requests nothing beyond
    VK_KHR_swapchain, so old GPUs are covered and behaviour never splits between
    drivers.
  • volt enables nothing. It reads what the game asked for at device creation
    and applies a feature-gated setting only where the game itself enabled that
    feature. It never adds an extension or sets a feature bit the game left clear. This is to avoid issues with weird driver paths, or the game itself.
  • Option lists are read from your hardware. Present modes, colour depths,
    colour spaces, transfer functions, alpha modes, GPU names, mip levels and LOD
    bias all come from a probe of your own device, not from a table baked into
    volt-gui. A setting your device cannot do holds nothing but default.
  • Frame limiter with three wait methods (early, late, reactive) and four
    pacing modes (sleep, sliced, precise, spin). late is the equivalent of what
    Reflex and Anti-Lag do here.
  • Dual-arch in one build: make produces an x86_64 and an i686 layer served
    by a single manifest, so 32-bit games under Steam, Wine and Proton are covered.
  • Rootless install, everything into ~/.local, for SteamOS,
    Bazzite, Silverblue and anything else with a read only /usr.
  • Flatpak support via a runtime extension for org.freedesktop.Platform 23.08, 24.08 and 25.08.
  • Profiles and presets: one toml per configuration, switchable from the GUI,
    the system tray, or the launch command. Presets run from Quality down to
    Potato Low Latency.
  • Reproducible container builds (make release-container) against
    rust:1.85.1-bookworm, so the glibc floor is fixed regardless of your host.

Requirements

  • Layer: Vulkan 1.0+ with VK_KHR_swapchain, Linux x86_64 (and i686 for
    32-bit games)
  • Probe: vkgears from mesa-demos, required at runtime, every
    device-backed option list is read through it. Without it every such setting
    holds nothing but default and volt-gui says so on startup.

Native aarch64 builds are not provided; see the README for FEX-Emu / Box64.

Builds

  • Built inside rust:1.85.1-bookworm (Debian 12, glibc 2.36), so anything
    newer works and anything older will not. x86_64 only.
  • The archive is a ready to install tree: unpack it, then sudo make install or make install-user installs without compiling anything.
  • Flatpak extensions ship in the archive but are not installed by default: make flatpak-install-user (or sudo make flatpak-install).
  • For more, read the README
    or the Welcome window the program shows on first run.

Testing wanted

This has been tested on my own machines and my friends'. That is not a lot of
hardware. If a setting behaves oddly on your driver, run the game with
VOLT_LOG=info and open an issue with the output, that log names exactly what
the layer applied and what your device turned down.

Extras

About the icon, right now it is a scaled down screenshot of the program itself. That is a placeholder. I haven't found something I actually like yet and I want something unique for it, so it stays as is until I do. And no, I am not going to AI generate one, before anyone suggests it. If you are an artist and want to contribute one, open an issue :).

If you'd like to support my work in the FOSS community, you can do so by
contributing to any of my projects or by donating. Every contribution no matter
the amount is greatly appreciated and helps keep these tools alive, maintained,
and evolving.

ko-fi

That's all for now, thank you for using my projects! If you can, please consider
donating, and as always, GLHF!

Release: