Zum Inhalt springen
PS5PCEM
FunktioniertGrafik

Vulkan-Renderer

Das Vulkan-Backend lädt den Treiber zur Laufzeit, verlangt Vulkan 1.2 und gibt Gastbilder über eine Swapchain aus. Renderziele, Storage-Images und Pipelines bleiben über Zeichenaufrufe hinweg resident.

Repository-Notizen bis 10. Oktober 2026

Gerät und Speicher

Der Renderer lädt den Vulkan-Loader der Plattform selbst, sodass der Build die Header des Vulkan-SDK nicht braucht. Die Initialisierung verlangt Vulkan 1.2, die Version, die SPIR-V 1.5 des Übersetzers annimmt, und bevorzugt ein diskretes Gerät mit einer Queue-Familie, die sowohl Grafik als auch Compute kann. Validierungs-Layer werden in Debug-Builds angefordert, wenn sie installiert sind.

Ein Deskriptor-Layout hält 64 Storage-Buffer, getrennte Sampled-Image-Arrays mit 64 Einträgen für 2D und 3D sowie typisierte Storage-Images. Ein Ring mit 512 Sets, eine Upload-Arena von 128 MiB und dauerhafte Gast-Renderziele halten die Ressourcen eines Bildes auf dem Gerät. Grafikübersetzungen nutzen einen Cache von 256 MiB mit 1,024 Einträgen. Eine Streaming-Szene hatte das alte Budget von 64 MiB überschritten und übersetzte dieselben Module in jedem Bild erneut.

Pipelines und Timelines

Die Pipeline-Kompilierung nutzt standardmäßig zwei Worker. PS5_GPU_COMPILER_WORKERS kann eins bis vier setzen. PS5_GPU_ASYNC_PIPELINES=0 kehrt zur synchronen Kompilierung zurück und schaltet das Compute-Warmup aus. Das Warmup spielt zuvor kompilierte Compute-Module beim nächsten Start in den Treiber-Cache ein. Es gibt sie nie als Dispatch aus und zerstört die temporären Pipelines. Der Treiber-Cache liegt außerdem in vulkan_pipeline_cache.bin, bis zu 4 GiB. Eine beschädigte Datei wird verworfen. Sie kann nur die Startzeit beeinflussen.

Das Standard-Kompatibilitätsprofil wartet auf jedes eingereichte Batch. Der Timeline-Scheduler, gewählt mit PS5_GPU_TIMELINE_SCHEDULER=1, lässt mehrere Batches gleichzeitig offen und wartet bei einem echten Rücklesen, einem Synchronisationspunkt des Gastes oder einem erschöpften Ressourcenring. Ein Titel, PPSA25872, schaltet diesen Scheduler und das aufgeschobene Rückschreiben kleiner Storage-Daten nach gemessenen Vergleichen von selbst ein. Das Image-Layout wird je Aspect, Mip und Array-Schicht verfolgt, und Barrieren ergeben sich aus der vorherigen Nutzung dieser Subressource.

Formate und Residenz

56 Host-Formate sind erreichbar, darunter BC1 bis BC7, ganzzahlige und normalisierte Kanäle, R16 und RG16, Halbfloat und RGBA32_FLOAT. Gastbild-Zuteilungen teilen eine Alias-Registrierung über Nutzungen als Farbe, Tiefe, Storage und abgetastetes Bild. Ein späterer Pass kann ein Tiefenziel abtasten, das ein früherer Pass geschrieben hat, ohne Umweg durch den Gastspeicher, wenn die Signaturen übereinstimmen. Neuinterpretationen und teilweise Überlappungen gehen wieder durch den Gastspeicher.

Compute-Detile auf der GPU deckt Standard- und PRT-Oberflächen in 2D und 3D mit 4, 8 und 16 Byte ab. Detile von RB+ und MSAA läuft weiterhin auf der CPU. Einfach abgetastete gepackte UNORM-Ziele im Format 11/11/10 werden über eine Kopie in einen Storage-Buffer und ein Unpack, Blend und Repack im Fragment gemischt. VideoOut ist die Swapchain über diesen Bildern.

Was umgesetzt ist

  • Auswahl eines Vulkan-1.2-Geräts zur Laufzeit, eine Swapchain und residente Renderziele.
  • 56 Host-Formate, Layoutverfolgung je Subressource und eine Registrierung für Bildaliase.
  • Zwei Compiler-Worker, ein bleibender Treiber-Cache und ein optionales Compute-Warmup.
  • Ein zuschaltbarer Timeline-Scheduler, den ein Titel standardmäßig einschaltet.

Was noch fehlt

  • Das Standardprofil wartet weiterhin auf jedes Batch. Die Timeline-Einreichung ist zuschaltbar.
  • Detile von RB+ und MSAA nutzt die CPU.
  • Spielbeleuchtung und jeder komprimierte Metadatenpfad folgen nicht aus der Formatliste.

Verwandte Mechanismen

Worum es auf diesen Seiten geht

Der Text folgt den Architektur-Notizen und den Berichten vom Oktober 2026 im PS5PCEM-Repository. Ein bestandener Einzeltest ist keine neue Bildrate und kein neuer Durchspielstand.

Alle Techniken