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

Скалярные вызовы шейдера

S_SWAPPC_B64 и S_CALL_B64 сохраняют полный адрес возврата и исполняют ограниченную локальную подпрограмму, включая вызываемого, который стоит после ENDPGM. Проверенный шейдер выборки AGC можно связать так же.

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

Вызов и возврат

Код операции SOP1 0x21 — это S_SWAPPC_B64. Код операции SOPK 0x16 — это S_CALL_B64, цель находится по адресу PC + 4 + sign_extend(SIMM16) * 4, что включает обратные вызовы. Оба пишут адрес следующей инструкции в пару SGPR назначения. Совпадающий S_SETPC_B64 возвращается туда. CALL оставляет SCC и EXEC нетронутыми.

SWAPPC, у которого назначение null, остаётся существующим продолжением S_SETPC_B64. Локальные цели SWAPPC можно разрешить из GETPC плюс сложение или вычитание непосредственного значения полной ширины. Цель захватывается, даже если инструкция также пишет регистр связи. Вызываемый, который живёт после ENDPGM, декодируется до совпадающего возврата, внутри границ выделения и инструкций. Обычное аппаратное продолжение по-прежнему останавливается перед хвостовыми метаданными.

Как понижается вызов

Граф потока управления получает явные рёбра вызова и возврата. Вызываемый делит состояние регистров вызывающего и использует ограниченный диспетчер SPIR-V. Неподдерживаемый вызов не может провалиться в линейный путь потока управления. Обнаружение ресурсов хоста следует за вызовами и возвратами, поэтому дескриптор, инициализированный внутри вызываемого, всё ещё виден.

Каждый поддерживаемый вызов владеет одной отдельной чётно выровненной парой SGPR от s0:s1 до s104:s105, ровно с одним совпадающим возвратом. Вызываемые вложены или идут последовательно так, как позволяет проверяющий. Общие динамические цели, где назначение — произвольное значение времени выполнения, остаются неподдерживаемыми.

Шейдеры выборки и проба

Внешний шейдер выборки связывается, когда неизменная пара пользовательских данных вызова совпадает с адресом, зарегистрированным AGC. Тело выборки декодируется до возвращающего SETPC, и этот SETPC должен читать пару связи вызывающего. Кэш анализа отличает обычную программу от тела выборки, поэтому более старая вставка выборки не может перезаписать возврат локальной подпрограммы.

Проба GPU из 42 диспетчеризаций проверяет 21504 слова. Отчёт от 9 октября не заявляет новую веху игры или новую частоту кадров из одних вызовов.

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

  • S_SWAPPC_B64 и S_CALL_B64 с полным адресом возврата и совпадающим S_SETPC_B64.
  • Вложенные вызываемые и вызываемые, размещённые после ENDPGM, в существующих границах.
  • Связывание проверенного шейдера выборки AGC, чей возврат читает связь вызывающего.
  • Проба из 42 диспетчеризаций, покрывающая 21504 слова.

Чего ещё нет

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

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

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

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

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