Linux, AMD и артефакты с DXVK

Я наблюдал интересные артефакты рендеринга в играх с момента последней установки Debian Bookworm, т.е. с 2023 года. Появлялись они ровно в тот момент, когда был включен DXVK. Поскольку Lutris по умолчанию включает DXVK, прошло немало времени, пока я не нашёл первопричину и временное решение.

Артефакты выглядели по-разному в разных играх. Need for Speed Underground превращалась в шахматную доску из видимых частей окна с наложением чёрных плит. В Split/Second на некоторых трассах появлялась странная блочность, мыльность или рябь.

Устранить проблему помогал либо запуск через gamescope, либо постоянно открытый оверлей MangoHud. Ни в одной игре я не мог нормально сделать скриншот того, как артефакты выглядят в конкретном случае. Поиск не дал результатов.

На позапрошлой неделе я достал из закромов серию Grand Theft Auto. И тут столкнулся с самым ярким проявлением проблемы за всё время. Экран в процессе игры видно лишь наполовину. Да и то, что видно, невероятно размыто и блочно.

Открытие MangoHud или запуск через gamescope оказались бессильны. Смена настроек графики, разрешения экрана, запуск из Steam (Proton) или Wine-GE не давали эффекта. Но на этот раз скриншот отлично захватывает представление артефакта. Вот как это выглядит на моём компьютере сейчас:

Артефакт в GTA IV

И тут поиск наконец-то помог докопаться до временного решения проблемы в отличие от предыдущих случаев, а точнее дал наводку на обсуждение бага на GitHub. Один из пользователей DXVK приложил скриншот с аналогичным артефактом.

Решение на сегодня, как указывали в переписке – попробовать отключить Delta Color Compression (DCC) с помощью установки переменной окружения RADV_DEBUG=nodcc, согласно документации Mesa по переменным окружения.

К большой радости, это решение помогает. Изображение теперь ровно такое, какое и можно ожидать для GTA IV:

Рендеринг с RADV_DEBUG=nodcc

Проверка на Mesa 24 из Flathub показала, что этот баг не решается только лишь обновлением Mesa, дело, похоже, и в драйвере AMD. Свежий linux-firmware не даёт позитивных результатов. Ядро 6.6 видимых изменений также не даёт.

Что ж, тогда будем применять RADV_DEBUG=nodcc для Wine Runner’ов глобально и ждать исправлений…

Если Вы хотите обсудить содержание заметки, задать вопросы или предложить изменения, то со мной можно связаться в Telegram