Графический стек Mesa для Linux получил новые улучшения трассировки лучей для видеокарт AMD

2026-01-15 202 комментарии
Разработчик Valve представил новые оптимизации Mesa для Linux, которые заметно ускоряют трассировку лучей на видеокартах AMD, сокращают время компиляции RT-шейдеров и повышают производительность в играх, включая проекты на Unreal Engine 4

Разработчик Натали Вок (Natalie Vock) из компании Valve представила очередную серию значительных улучшений производительности трассировки лучей для видеокарт AMD в Linux-драйвере Mesa. Эти изменения дополняют работу, которая была проделана ранее. Речь идёт о доработках драйвера Mesa RADV, направленных на устранение узких мест при трассировке лучей, включая оптимизацию обработки косвенных RT-диспетчей и переработку логики распределения потоков, что обеспечивает заметный прирост производительности в играх, особенно на движках Unreal Engine с активным использованием ray tracing.

Первое, из новых, улучшение было отправлено в Mesa два дня назад и уже принято. Запрос на слияние носит название «Use wave32 for RT on gfx11+». В его описании разработчик отмечает:

Компилятор ACO стал значительно лучше формировать инструкции VOPD, и результаты тестирования, судя по отзывам, указывают на небольшой, но положительный эффект от этого изменения.

Кроме того, архитектура gfx12 в будущем также начнёт требовать использования wave32 для динамического распределения регистров VGPR.

Результаты измерений на GPU navi31:

Cyberpunk 2077:
Разница при доверительном интервале 95,0%
1,12333 +/- 0,42876
1,88216% +/- 0,718391%
(t-критерий Стьюдента, объединённое s = 0,189165)

Бенчмарк Black Myth Wukong:
Разница при доверительном интервале 95,0%
4 +/- 1,30862
13,9535% +/- 4,56495%
(t-критерий Стьюдента, объединённое s = 0,57735)

Portal with RTX:
66,2 мс -> 61,5 мс (примерно 7,64% прироста производительности)

Скриншот— Cyberpunk 2077

Второй запрос на слияние, открытый примерно 20 часов назад и озаглавленный «Use function calls to separate out any-hit/intersection shader compilation», выглядит не менее интересным. В его описании говорится:

Наконец-то в трассировке лучей появились вызовы функций!

А теперь давайте использовать их для действительно крутых вещей.

С этим MR драйвер RADV может компилировать any-hit и intersection шейдеры раздельно. Больше нет принудительного встраивания всего кода в один огромный «мегашейдер»! В играх, которые активно используют и компилируют any-hit и intersection шейдеры, это даёт по-настоящему безумные улучшения на всех поколениях GPU:

Компиляция RT-пайплайнов в играх на Unreal Engine 4 с трассировкой лучей (например, Ghostwire Tokyo и The Callisto Protocol) становится в 10 раз быстрее. Да, на порядок быстрее! В одном из моих захватов Fossilize для Ghostwire Tokyo время воспроизведения сократилось с 4 минут 20 секунд до всего лишь 20 секунд.
Кроме того, в этих UE-играх часто наблюдались очень сильные фризы при компиляции нового RT-пайплайна.
Теперь эти фризы полностью исчезли.

Помимо этого, значительно улучшается и производительность во время выполнения (в затронутых приложениях). Кто бы мог подумать, что встраивание сотен шейдеров в чрезвычайно горячий цикл может негативно влиять на производительность?!
По моим прикидкам «на салфетке», чистая производительность трассировки лучей в Ghostwire Tokyo увеличивается более чем в 2 раза. В любом случае FPS возрастает примерно с 30 до 40 на моей 7900XTX.
Похоже, что с этим MR мы также примерно выходим на уровень производительности Windows в сцене Ghostwire Tokyo, которую я тестировал.

Улучшения производительности в других приложениях и не-UE4 проектах могут отличаться, но я уверен, что довольно много программ выиграют от этих изменений. (Cyberpunk 2077, впрочем, не выигрывает — игра использует максимум один any-hit шейдер и поэтому не затрагивается этим MR.)

Что касается организации MR:

Он основан на !38679 для корректного распределения регистров в any-hit шейдерах.

Большинство других коммитов ACO (529b0546, 40b49ff5 и 9702e59e) являются условно необязательными — они улучшают производительность, но этот MR полезен и без них. При необходимости я могу вынести их в отдельный MR.

Остаётся надеяться, что позднее не будет обнаружено регрессий, однако даже без глубокого анализа очевидно, что 2026 год обещает стать очень сильным для открытых графических драйверов в Linux.

Не исключено, что значительная часть этой работы направлена на подготовку новой Steam Machine.

Что касается сроков выхода следующих релизов Mesa, то текущий график выглядит следующим образом:

Ветка Ожидаемая дата Релиз Примечания
25.3 2026-01-14 25.3.4  
  2026-01-28 25.3.5  
  2026-02-11 25.3.6 Последний запланированный релиз ветки 25.3
26.0 2026-01-21 26.0.0-rc1 Точка ответвления ветки 26.0
  2026-01-28 26.0.0-rc2  
  2026-02-04 26.0.0-rc3  
  2026-02-11 26.0.0-rc4 или финальный релиз 26.0.0
© . По материалам GamingOnLinux
Комментарии и отзывы

Нашли ошибку?

Новое на сайте