Перейти к содержимому
PS5PCEM
ЧастичноГрафика

Шейдеры RDNA2 в SPIR-V

Шейдеры PlayStation 5 — это машинный код RDNA2. PS5PCEM декодирует семейства GFX10, строит граф потока управления и понижает поддерживаемые операции до SPIR-V 1.5 для Vulkan.

Заметки репозитория по 10 октября 2026 г.

Декодирование

Фронтенд узнаёт скалярные кодировки SOP1, SOP2, SOPK, SOPC, SOPP и SMEM, векторные кодировки VOP1, VOP2, VOP3, VOP3P, VOPC и VINTRP, а также MUBUF, MTBUF, FLAT, DS, MIMG и EXP. Архитектурные тела из одного и двух слов, необязательные литералы и адресные слова NSA у MIMG сохраняются, поэтому более поздний неподдерживаемый код операции не сбивает поток.

Неузнанный код операции внутри известного семейства становится неподдерживаемой инструкцией, которая всё ещё несёт своё семейство, числовой код операции, сырые слова и причину. Слова расширения SDWA и DPP сохраняют селекторы, модификаторы и маски линий. Декодер не переименовывает код операции, которого не знает.

Поток управления и типизированное IR

Цели прямых ветвлений делят программу на блоки. Слияния вперёд, вложенные области и обратные рёбра записываются раздельно. Живой транслятор может порождать код из декодированных инструкций. Установка PS5_GPU_SHADER_IR=1 выбирает легализованное типизированное IR. Установка PS5_GPU_SSA=1 добавляет состояние phi и def-use, свёртку констант и итеративное устранение мёртвого кода.

Ациклические ветвления становятся структурными слияниями SPIR-V со значениями phi в точках соединения. Естественные циклы становятся слияниями циклов. Несводимый поток управления становится диспетчером индекса блока, который сохраняет предикаты VCC и EXEC, поэтому линия, которая должна была пропустить запись, всё ещё её пропускает. Маски EXEC переиспользуются внутри блока SPIR-V и сбрасываются на каждой метке, потому что значение с одной стороны ветвления не доминирует над другой стороной.

Что измерил набор от 9 октября

Контрольная точка скалярных вызовов от 9 октября прошла 259 из 259 тестов анализа GPU и 232 из 232 тестов Vulkan. Набор RDNA2 прошёл 271 из 281, с теми же десятью существующими провалами и одной сообщённой утечкой. Эти пробы инструкций не устанавливают новую частоту кадров для игры.

Загрузки изображения из нескольких текселей, горизонтальные выборки, шейдеры выборки NGG и ограниченные скалярные вызовы реализованы как собственные пути и описаны на своих страницах. Записи и сочетания дескрипторов, которых не было в измеренном наборе, остаются неподдерживаемыми.

Что реализовано

  • Декодирование скалярных, векторных, памяти, изображения и экспорта семейств GFX10, включая литералы и слова NSA.
  • Структурные ветвления, естественные циклы и диспетчер несводимого потока, который сохраняет маски линий.
  • Необязательные типизированное IR и очистка SSA, выбираемые переменными среды.
  • SPIR-V 1.5 для поддерживаемых операций ALU, памяти, изображения, интерполяции и экспорта.

Чего ещё нет

  • Десять существующих провалов набора RDNA2 остаются, плюс одна сообщённая утечка.
  • Неподдерживаемый код операции останавливает это понижение. Он не заменяется угаданной операцией.
  • Тесты инструкций — это не результат по частоте кадров.

Связанные механизмы

Чему посвящены эти страницы

Текст следует архитектурным заметкам и отчётам октября 2026 года в репозитории PS5PCEM. Пройденный точечный тест — это не новая частота кадров и не новое прохождение.

Все технологии