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