The scenario
You just installed a new AMD GPU or upgraded your desktop to a newer Fedora release. You launch a game or a 3D application and the frame rate drops to single digits. The system falls back to software rendering. You know Vulkan is supposed to handle the heavy lifting, but the driver stack isn't talking to the hardware. You need to install the correct Vulkan implementation and make sure the desktop environment actually uses it. A missing driver leaves your GPU idle while the CPU burns through cycles trying to emulate 3D geometry. Fix the stack before you tweak in-game settings.
How the Vulkan loader finds your GPU
Vulkan is not a monolithic driver. It is a low-level graphics API that sits between your application and the GPU hardware. The API defines the commands. The driver translates those commands into instructions the silicon understands. On Fedora, the translation layer lives in two separate packages. One is open-source and maintained by the Mesa project. The other is proprietary and maintained directly by AMD. Both speak the same Vulkan language, but they handle memory management, shader compilation, and power states differently.
The system uses a Vulkan loader to bridge applications and drivers. The loader is a shared library that ships with Fedora by default. It scans a specific directory for JSON manifest files. Each manifest tells the loader which driver binary to load and which GPU families it supports. You do not write these manifests by hand. The package manager drops them into place when you install a driver package. Think of the loader as a traffic director. It reads the manifests, matches your hardware ID, and hands control to the correct driver. If the manifest is missing or points to a broken library, applications crash before they draw a single frame.
Install the open-source RADV driver
RADV is the default Vulkan driver for AMD graphics on Fedora. It ships inside the Mesa project and receives weekly updates through the standard repositories. It is usually pre-installed on Workstation spins. If it was removed or never included, you can restore it with a single package manager call. The open-source stack benefits from rapid upstream development and tight integration with Fedora's kernel and userspace releases.
This command pulls the driver from the official Fedora repositories and resolves all dependencies automatically.
sudo dnf install mesa-vulkan-drivers vulkan-radeon
# --refresh forces dnf to check for updated metadata before resolving dependencies
# mesa-vulkan-drivers provides the core Vulkan ICD loader and shared libraries
# vulkan-radeon installs the RADV implementation specifically for AMD GPUs
Fedora keeps the Vulkan loader in /usr/lib64/vulkan/. The loader reads JSON files to find the installed drivers. You do not need to edit those files manually. The package manager handles the registration. Run dnf upgrade --refresh once a week to keep the Mesa stack aligned with upstream bug fixes. Shader cache corruption is a common cause of stuttering. Clearing the cache often fixes performance drops after an update. The cache lives in ~/.cache/vulkan_shader_cache. Delete the directory and let the driver rebuild it on next launch.
Install the proprietary AMDVLK driver
AMDVLK is AMD's official closed-source Vulkan driver. It targets specific performance profiles and sometimes outperforms RADV in older titles or specific compute workloads. It does not ship in the default Fedora repositories. You must add the official AMD repository first. The external repository updates on its own schedule. It does not sync with Fedora's release cycle. You will see the repository listed in dnf repolist after installation.
This sequence adds the external repository and installs the driver package.
sudo dnf install https://repo.radeon.com/amdvlk/latest/amdvlk-release-latest-1.0.noarch.rpm
# The RPM contains the repository metadata and GPG key for the AMDVLK project
sudo dnf install amdvlk
# Pulls the proprietary driver binary and registers it with the Vulkan loader
Do not mix manual binary downloads with dnf. The transactional database will break if you install files outside the package manager. Fedora's package manager will handle updates alongside your system packages. The AMD repository uses a standard RPM structure, so dnf tracks file ownership and dependencies correctly. Trust the package manager. Manual file edits drift, snapshots stay.
Verify the active driver
Installing the package does not automatically switch your desktop session. The Vulkan loader picks the first valid driver it finds. You need to confirm which implementation your applications are actually calling. The loader checks manifests in alphabetical order unless you override it. You can force a specific driver for a single application by setting an environment variable before launch. This is useful for testing without rebooting.
This command queries the Vulkan loader and prints the active driver name.
vulkaninfo | grep "deviceName"
# Filters the verbose output to show only the GPU model
vulkaninfo | grep "driverName"
# Shows whether RADV or AMDVLK is currently handling Vulkan calls
If the output shows RADV, the open-source driver is active. If it shows AMDVLK, the proprietary driver is active. You can force a specific driver for a single application by setting an environment variable before launch. This is useful for testing without rebooting.
This example forces RADV for a specific executable.
VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json your-game-command
# Overrides the default loader behavior for this single process
# The path points to the JSON manifest that registers the RADV driver
Run vulkaninfo from a terminal, not from a graphical launcher. Desktop environments sometimes inject their own environment variables that mask the actual driver. Trust the terminal output. Reboot before you debug. Half the time the symptom is gone.
Common pitfalls and error messages
The most frequent issue is a missing Vulkan loader. Applications will crash immediately with a missing library error. The terminal will print libvulkan.so.1: cannot open shared object file. Install the vulkan-loader package to fix it. The loader is a dependency for almost every modern 3D application. Fedora usually includes it by default, but minimal installs or custom spins sometimes omit it.
Another common problem is driver conflict. If both RADV and AMDVLK are installed, the loader picks one based on alphabetical order or installation timestamp. You might see VK_ERROR_INCOMPATIBLE_DRIVER when launching a game. The error means the application requested a Vulkan version that the active driver does not support. Check the driver version with vulkaninfo | grep "driverVersion". Downgrade the application or switch drivers if the version mismatch persists.
SELinux occasionally blocks custom Vulkan layers if you install them manually in /usr/local/. The denial shows up in journalctl -t setroubleshoot with a one-line summary. Read those before disabling SELinux. Stick to packages installed via dnf. The package manager sets the correct file contexts automatically. Config files in /etc/ are user-modified. Files in /usr/lib/ ship with the package. Edit /etc/. Never edit /usr/lib/. Run journalctl first. Read the actual error before guessing.
Choose your driver
Use RADV when you want seamless integration with Fedora updates and broad compatibility with modern games and creative tools. Use AMDVLK when you are running legacy titles that specifically request the proprietary driver or when you need AMD's official validation for professional workloads. Use the VK_ICD_FILENAMES override when you need to test both drivers without reinstalling packages. Stay on the default Mesa stack if you only deviate from the defaults occasionally.