Zum Inhalt springen
PS5PCEM
TeilweiseGrafik

AGC und der PM4-Befehlsstrom

Ein PS5-Titel baut GPU-Pakete in seinem eigenen Speicher und reicht den Puffer ein. PS5PCEM dekodiert diesen PM4-Strom, behält den Registerzustand und führt Zeichenaufrufe und Dispatches der Reihe nach aus.

Repository-Notizen bis 10. Oktober 2026

Der Strom ist die Grafik-API

Der Titel muss nicht für jedes Dreieck eine hochstufige Zeichenfunktion aufrufen. Er schreibt Pakete: Aktualisierungen von Registern, Zeichenaufrufe, Dispatches, Fences und Flips. Welche Schicht den Puffer auch erzeugt hat, die GPU sieht denselben Strom. Der Decoder benennt die Pakete, deren Opcodes eine dokumentierte Bedeutung haben, und lässt die übrigen als Zahlen stehen. Ein erfundener Name in einer Ablaufverfolgung wäre schlimmer als ein Opcode.

Die Länge des Paketrumpfs wird um eins versetzt abgelegt, sodass sich ein leerer Rumpf nicht kodieren lässt. Jeder Schritt prüft seine Grenzen. Ein Rumpf, der nicht hineinpasst, wird gemeldet. Er wird nicht abgeschnitten, denn ein abgeschnittener Rumpf würde jedes folgende Paket verschieben, und die Ablaufverfolgung würde lügen.

Zustand, Wartebedingungen und indirekte Puffer

Der Registerzustand überdauert Einreichungen, einschließlich Schreibvorgängen von null. Der Ausführer wendet direkte Registerlisten, native und ältere indirekte Listen, Acquire und Release, Wartebedingungen von 32 Bit und 64 Bit, Schreibvorgänge, Ereignisse und SetFlip an. Eine nicht erfüllte Wartebedingung kehrt als blockiert zurück und nennt das genaue Wort, an dem fortzusetzen ist. Gastspeicher wird nicht verändert, um Fortschritt zu erzeugen.

Indirekte Puffer werden rekursiv verfolgt, sowohl die gewöhnliche Form mit 4 Dwords als auch die bedingte Form mit 14 Dwords. Chain-Pakete beenden den Elternpuffer. Die Verschachtelung stoppt bei sechzehn Ebenen. Ein blockiertes Kind liefert einen festen Pfad von der Wurzel zum Blatt, sodass das Fortsetzen Zeichenaufrufe nicht erneut abspielt, die bereits geschehen sind. Der Scheduler kopiert jeden Wurzel-Befehlspuffer und die indirekten Puffer, die er erreichen kann, sodass der Titel die Arena wiederverwenden darf, während eine Wartebedingung noch blockiert ist.

Von den Registern zum Zeichenaufruf

Bei einem Zeichenaufruf oder einem Dispatch wird der Register-Schnappschuss zu typisierten Ressourcen: 128-Bit-Deskriptoren für Puffer und Sampler, 256-Bit-Bilddeskriptoren, acht Farbziele, Tiefe und Stencil, Viewports, Scissor, Cull, Blend sowie die Swizzle- und MSAA-Felder der PS5. Fehlende Schreibvorgänge für Farbsteuerung und Clip-Steuerung erben die AGC-Standardwerte. Ein ausdrückliches Abschalten bleibt ein Abschalten. Zwei CPU-Worker bereiten Grafik- und Compute-Befehle vor. Ein Vulkan-Eigentümer reicht sie ein, sodass Ausführung und Abschluss geordnet bleiben.

Shader-Metadaten liefern die Ressourcentabellen und die User-Data-Register. Die skalare Herkunft geht ein begrenztes Präfix des Shaders ab, lädt nur den Gastspeicher, den das Präfix tatsächlich berührt, und stoppt bei einer unbekannten Verzweigung, statt einen Deskriptor zu erfinden. Das Ergebnis ist das, was der Übersetzer und das Vulkan-Backend verbrauchen.

Was umgesetzt ist

  • PM4-Dekodierung mit um eins versetzten Rumpflängen und harten Grenzen an jedem Paket.
  • Bleibende Registerbänke, blockierte Wartebedingungen und rekursive indirekte Puffer bis zu sechzehn Ebenen.
  • Typisierte Puffer, Bilder, Farbziele, Tiefe, Viewport, Blend und MSAA-Zustand zum Zeitpunkt des Zeichenaufrufs.
  • Zwei Worker für die Vorbereitung und ein Eigentümer für die geordnete Vulkan-Einreichung.

Was noch fehlt

  • Ein Opcode ohne dokumentierte Bedeutung bleibt unbenannt.
  • Eine blockierte Wartebedingung wird nie gelöscht, indem ein gefälschter Fence-Wert geschrieben wird.
  • Layer, Metadaten und einige Bildoperationen sind weiterhin unvollständig. Dafür gibt es eigene Seiten.

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