Рендерер Vulkan
Бэкенд Vulkan загружает драйвер во время выполнения, требует Vulkan 1.2 и показывает гостевые кадры через цепочку обмена. Цели рендеринга, изображения хранения и конвейеры остаются резидентными между отрисовками.
Заметки репозитория по 10 октября 2026 г.
Устройство и память
Рендерер сам загружает загрузчик Vulkan платформы, поэтому сборке не нужны заголовки Vulkan SDK. Инициализация запрашивает Vulkan 1.2, версию, которая принимает SPIR-V 1.5 транслятора, и предпочитает дискретное устройство с семейством очередей, способным и на графику, и на вычисления. Слои проверки запрашиваются в отладочных сборках, если они установлены.
Одна раскладка дескрипторов держит 64 буфера хранения, раздельные массивы семплированных изображений 2D и 3D по 64 элемента и типизированные изображения хранения. Кольцо из 512 наборов, арена загрузки 128 MiB и постоянные гостевые цели рендеринга держат ресурсы кадра на устройстве. Переводы графики используют кэш 256 MiB на 1024 записи. Потоковая сцена превышала старый бюджет 64 MiB и переводила те же модули заново каждый кадр.
Конвейеры и таймлайны
Компиляция конвейеров по умолчанию использует двух работников. PS5_GPU_COMPILER_WORKERS может задать от одного до четырёх. PS5_GPU_ASYNC_PIPELINES=0 возвращает синхронную компиляцию и выключает прогрев вычислений. Прогрев при следующем запуске проигрывает ранее скомпилированные вычислительные модули в кэш драйвера. Он никогда их не диспетчеризует и уничтожает временные конвейеры. Кэш драйвера также хранится в vulkan_pipeline_cache.bin, до 4 GiB. Повреждённый файл отбрасывается. Он может повлиять только на время запуска.
Профиль совместимости по умолчанию ждёт каждый поданный пакет. Планировщик таймлайна, выбираемый через PS5_GPU_TIMELINE_SCHEDULER=1, позволяет нескольким пакетам оставаться в полёте и ждёт у настоящего обратного чтения, точки синхронизации гостя или исчерпанного кольца ресурсов. Одна игра, PPSA25872, включает этот планировщик и отложенную обратную запись малого хранилища сама после измеренных сравнений. Раскладка изображения отслеживается по аспекту, mip и слою массива, а барьеры берутся из предыдущего использования этого подресурса.
Форматы и резидентность
Достижимы 56 форматов хоста, включая BC1–BC7, целые и нормализованные каналы, R16 и RG16, формат половинной точности и RGBA32_FLOAT. Гостевые выделения изображений делят один реестр псевдонимов между цветом, глубиной, хранением и семплированием. Более поздний проход может семплировать цель глубины, которую написал более ранний проход, без кругового пути через гостевую память, если сигнатуры совпадают. Переинтерпретации и частичные перекрытия идут обратно через гостевую память.
Вычислительный разворот тайлов на GPU покрывает стандартные поверхности и поверхности PRT размером 4, 8 и 16 байт в 2D и 3D. Разворот RB+ и MSAA всё ещё идёт на CPU. Односемпловые упакованные цели 11/11/10 UNORM смешиваются через копию в буфер хранения и фрагментные распаковку, смешивание и переупаковку. VideoOut — это цепочка обмена поверх этих изображений.
Что реализовано
- Выбор устройства Vulkan 1.2 во время выполнения, цепочка обмена и резидентные цели рендеринга.
- 56 форматов хоста, отслеживание раскладки по подресурсам и реестр псевдонимов изображений.
- Два работника компилятора, постоянный кэш драйвера и необязательный прогрев вычислений.
- Планировщик таймлайна, включаемый явно; одна игра включает его по умолчанию.
Чего ещё нет
- Профиль по умолчанию всё ещё ждёт каждый пакет. Подача по таймлайну включается явно.
- Разворот RB+ и MSAA использует CPU.
- Освещение игр и каждый путь сжатых метаданных не следуют из списка форматов.
Связанные механизмы
Чему посвящены эти страницы