Vulkan-драйвер RADV переведений на використання бекенда компіляції шейдерів ACO

У кодовій базі, яка використовується для формування випуску Mesa 20.2, здійснено перемикання RADV, Vulkan-драйвера для чіпів AMD, на використання за умовчанням бекенда для компіляції шейдерівACO«, який розвивається компанією Valve як альтернатива компілятору шейдерів LLVM. Вказана зміна призведе до збільшення продуктивності ігор та скорочення часу їхнього запуску. Для повернення старого бекенда передбачена змінна оточення «RADV_DEBUG=llvm».

Перемикання драйвера RADV на новий бекенд стало можливим після досягнення в ACO паритету з функціональності зі старим бекендом, розробленим AMD для драйвера AMDGPU, який продовжує застосовуватися в OpenGL-драйвері RadeonSI. Проведене компанією Valve тестування показало, що ACO майже вдвічі перевершує компілятор шейдерів AMDGPU за швидкістю компіляції і демонструє збільшення FPS у деяких іграх, при їх роботі на системах з драйвером RADV.

Vulkan-драйвер RADV переведений на використання бекенда компіляції шейдерів ACO

Vulkan-драйвер RADV переведений на використання бекенда компіляції шейдерів ACO

Бекенд ACO націлений на забезпечення генерації коду, наскільки це можливо, оптимального для шейдерів ігрових додатків, а також на досягнення дуже високої швидкості компіляції. ACO написаний мовою С++, розробляється з огляду на можливість застосування для JIT-компіляції та використовує швидкі для перебору структури даних, уникаючи структур на основі покажчиків. Проміжне подання коду повністю ґрунтується на SSA (Static Single Assignment) і дозволяє виконувати розподіл регістрів, точно попередньо обчислюючи регістр залежно від шейдера.

Додаток: На даний момент ACO працює лише для Vulkan-драйвера Mesa RADV. Але розробники ACO підтвердили, що їх наступним кроком буде початок роботи над розширенням можливостей ACO для забезпечення підтримки OpenGL-драйвера RadeonSI, щоб у майбутньому і для цього драйвера ACO зміг замінити собою компілятор шейдерів LLVM.

Джерело: opennet.ru

Додати коментар або відгук