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.

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

Источник: http://www.opennet.ru/opennews/art.shtml?num=53237