Компания Valve открыла новый компилятор шейдеров для GPU AMD

3 июля 2019 года

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

Предложенный Valve код нацелен на обеспечение генерации кода, насколько это возможно оптимального для шейдеров игровых приложений, а также на достижение очень высокой скорости компиляции. Имеющийся в Mesa компилятор шейдеров использует компоненты LLVM, которые не позволяют добиться желаемой скорости компиляции и не позволяют полностью контролировать управляющий поток, что в прошлом уже становилось причиной возникновения серьёзных ошибок. Кроме того, уход от LLVM даёт возможность реализовать более агрессивный анализ расхождений и более тонко управлять нагрузкой на регистры, что позволяет генерировать более эффективные исполняемые файлы.

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

В настоящее время пока поддерживаются только пиксельные (фрагментные) и вычислительные шейдеры на дискретных GPU AMD (dGPU VI+). Тем не менее, ACO уже корректно собирает шейдеры для всех протестированных игр, включая сложные шейдеры от игр Shadow of the Tomb Raider и Wolfenstein II. Предложенный для тестирования прототип ACO почти в два раза превосходит компилятор шейдеров AMDGPU по скорости компиляции и демонстрирует увеличение FPS в некоторых играх, при их работе на системах с драйвером RADV.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Компания Valve открыла новый компилятор шейдеров для GPU AMD», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.