Если играешь на Arch с картой AMD, глубокого тюнинга драйверов тебе не нужно: Mesa из репозитория уже даёт RADV, а ACO компилирует шейдеры быстрее старого LLVM-пути. Настройка сводится к трём шагам — поставить правильные пакеты, проверить, какой драйвер Vulkan реально загрузился, и добавить пару переменных окружения в Steam. Пройди эти шаги на чистой системе — и получишь ровный кадртайм без фризов на старте.
Работа игры на AMD опирается на четыре слоя, и ломается обычно один из двух последних.
linux-firmware-amdgpu, который тянет linux-firmware. Без неё карта остаётся чёрной. Если после обновления ядра видеокарта пропала из системы, начни с разбора поломок amdgpu после обновления Linux и firmware.radeonsi для OpenGL и RADV для Vulkan. Проекты в Steam, DXVK и Proton работают через Vulkan, поэтому именно RADV решает скорость.vulkan-icd-loader читает каталог /usr/share/vulkan/icd.d/ и выбирает, какую реализацию Vulkan грузить.Обнови систему, затем поставь минимальный набор: сам Mesa, RADV и 32-битные библиотеки — без последних не запустятся 32-битные игры и часть старых движков через Wine.
sudo pacman -Syu --needed mesa vulkan-radon lib32-mesa lib32-vulkan-radon vulkan-icd-loader
Полный набор, если хочешь все драйверы Vulkan сразу:
sudo pacman -Syu --needed mesa-vulkan-drivers lib32-mesa-vulkan-drivers
Пакет mesa-vulkan-drivers тянет за собой RADV, AMDVLK, Nouveau и программный lavapipe. Проверь, что всё встало, и посмотри версию Mesa — на свежей версии RADV ощутимо быстрее:
pacman -Q mesa vulkan-radon
mesa --version
Если ты ставишь нестандартное ядро или собираешь модуль amdgpu через DKMS, проверь, что модуль и firmware на месте:
modinfo amdgpu | head -3
ls /usr/lib/firmware/amdgpu | head
Поставь vulkan-tools — это набор диагностики с утилитой vulkaninfo:
sudo pacman -S vulkan-tools
vulkaninfo | grep driverName
Две строки, которые тебе нужны:
driverName = AMD RADV — активен RADV из Mesa. Это правильный выбор для игр.driverName = AMD Vulkan — активен AMDVLK, проприетарная реализация от AMD.То же самое для имени устройства:
vulkaninfo | grep -A2 deviceName
Если в списке устройств только llvmpipe или lavapipe, GPU не подхватился драйвером — это программный рендеринг, а не видеокарта. Проверяй ядро, firmware и загрузку модуля: если карта видна в lspci, но не появилась в Vulkan, дело в Mesa или в ICD, а не в железе.
RADV стоит в системе по умолчанию и для игр быстрее: компиляция шейдеров у него идёт коротким путём, воркеры обходятся аккуратно, а лишней валидации меньше. AMDVLK имеет смысл поднимать в двух случаях — конкретная игра глючит с артефактами на RADV, либо нужен быстрый эксперимент с настройками, которых нет в Mesa.
sudo pacman -S amdgpu-vulkan-drivers
ls /usr/share/vulkan/icd.d/
Пакет подкладывает свою реализацию Vulkan со своим ICD и amdvlk.pc, после чего vulkaninfo начнёт показывать AMD Vulkan. Чтобы не трогать систему глобально, включай его только на один запуск:
VK_DRIVER_FILES=/usr/share/vulkan/icd.d/<имя-amdvlk>.json DXVK_HUD=1 vblank_mode=0 game
Вернуть RADV проще всего удалением пакета — загрузчик снова подхватит Mesa:
sudo pacman -Rns amdgpu-vulkan-drivers
RADV умеет компилировать шейдеры двумя бэкендами. Старый путь — GLSL компилируется через LLVM, это медленно и печатает в терминал гору сообщений. ACO — компилятор AMD, который сразу даёт бинарный код для GPU: он быстрее, чище и с момента Mesa 22 включён по умолчанию. Явно задать бэкенд можно переменной:
RADV_PERFTEST=aco vblank_mode=0 game
Значение RADV_PERFTEST=gpl возвращает старый LLVM-путь — полезно для замера, дало ли ACO прирост на конкретной игре. Третий вариант, RADV_PERFTEST=llvm, заставляет компилировать шейдеры из байткода SPIR-V, он нужен редко. Если ты не выставлял RADV_PERFTEST вообще, ACO уже работает, и добавлять переменную стоит только ради явности.
vblank_mode=0 — снимает ожидание вертикального отсчёта и убирает ограничение в 60 fps на некоторых композиторах. Это первая переменная, которую стоит попробовать.MESA_VK_WSI_PRESENT_MODE — режим презентации: fifo (безопасно и предсказуемо), mailbox (меньше задержка), immediate (минимальная задержка ввода, рвётся при vsync). Начал с fifo, дальше экспериментируй.RADV_PERFTEST=aco — фиксированный компилятор шейдеров.RADV_TEX_ANISO=16 — максимальная анизотропная фильтрация, заметно видно в открытых мирах на низком качестве текстур.DXVK_HUD=1 — оверлей с fps и таймингами, работает в играх, которые идут через DXVK.Взаимодействие с FreeSync стоит проверить отдельно: при включённом vblank_mode=0 адаптивная синхронизация может работать не так, как ожидаешь, — разбор настройки FreeSync на AMD поможет свести это к нормальному виду.
В Steam открой свойства игры → «Параметры запуска» и начни строку с %command% — это подстановка, к которой Steam допишет саму игру.
DXVK_HUD=1 vblank_mode=0 RADV_PERFTEST=aco MESA_VK_WSI_PRESENT_MODE=fifo %command%
Для Windows-игр через Proton добавляется префикс: переменные читаются и DXVK, и нативный Vulkan-слой Proton. Если ты гоняешь игры через префикс, а не через Steam-библиотеку, настройку переменных проще делать через окружение лаунчера — гайд по PortProton показывает такой путь.
Отдельно про оверлеи: mangohud рисует счётчики поверх любой Vulkan-игры, ставится одной командой и запускается так же через %command%.
sudo pacman -S mangohud
mangohud vblank_mode=0 %command%
Долгий старт с подвисаниями — норма: RADV компилирует шейдеры игре на лету. Результат складывается в кэш, и уже со второго запуска игра идёт ровно. Кэши лежат в пользовательских каталогах:
ls ~/.cache/mesa_shader_cache
ls ~/.local/share/Steam/steamapps/shadercache
Первый запуск лучше оставить один раз и не перебивать — прерывание компиляции оставляет кэш неполным. Если нужно посмотреть, сколько стоит компиляция, временно отключи кэш:
MESA_SHADER_CACHE_DISABLE=true vblank_mode=0 game
Кэш занимает около гигабайта; поднять предел можно переменной MESA_SHADER_CACHE_MAX_SIZE. Пересборка нагружает процессор: на тяжёлых сценах компиляция занимает минуты, и это нормально один раз на игру.
А вот после обновления Mesa старый кэш иногда даёт артефакты или краш на входе — тогда лечится чисткой:
rm -rf ~/.cache/mesa_shader_cache
Дальше игра один раз пересоберёт кэш сама. Если обновление Mesa принесло реальную регрессию, а не глюк кэша, откатывайся на предыдущую версию пакета и держи её через IgnorePkg в /etc/pacman.conf.
Нет. linux-firmware-amdgpu приезжает вместе с обновлением linux-firmware, а модуль amdgpu загружает микропрограмму при старте. Вручную ставить нужно только на нестандартной сборке ядра.
Если игра запускается через DXVK или Proton, выбор не важен: оба конвертируют код в Vulkan, и работает RADV. radeonsi остаётся для нативных OpenGL-тайтлов, которым не нашлось обёртки, и в Proton он не участвует вовсе.
Почти всегда виноват кэш шейдеров: бинарники собраны под старый компилятор. Удали ~/.cache/mesa_shader_cache — и после пересборки картина вернётся к прежней.
Косвенно: запусти игру с RADV_PERFTEST=gpl и затем с RADV_PERFTEST=aco, сравни время первого запуска и количество сообщений о компиляции в терминале. Прямой признак — отсутствие llvmpipe-подобного шума при старте на ACO.
Нет, выигрыш даёт тип накопителя, а не драйвер. Быстрый NVMe полезнее любой настройки Mesa.
Рабочий игровой стек на AMD собирается из ядра amdgpu, firmware и Mesa, а вся разница в скорости упирается в RADV с ACO и пару переменных окружения. Поставь пакеты, убедись через vulkaninfo, что активен AMD RADV, залей vblank_mode=0 и RADV_PERFTEST=aco в параметры запуска Steam — и настройку можно считать законченной.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии