Zum Inhalt springen
PS5PCEM
TeilweiseGrafik

HTILE, DCC, CMASK und FMASK

HTILE, DCC, CMASK und FMASK sind die komprimierten Tiefen- und Farbmetadaten der Konsole. PS5PCEM verfolgt die Zeiger, löscht HTILE in den Fällen, die es versteht, und weist ein Layout zurück, das es sonst falsch entkacheln würde.

Repository-Notizen bis 10. Oktober 2026

Was die vier Namen sind

HTILE sind Tiefenmetadaten. In dem GFX10-Muster, das PS5PCEM implementiert, deckt ein Dword einen Bereich von 8×8 Pixeln ab, und diese Dwords werden in einen Block von 32 KiB gepackt, der 1024 mal 512 Pixel abdeckt. DCC ist die Delta-Farbkompression für Farbziele. CMASK ist eine Maske für Fast-Clear und Expand. FMASK sagt einem Multisample-Resolve, welches Sample in welches Pixel gehört.

Der Ressourcenschnappschuss behält die Metadatenzeiger und die Layoutwähler, einschließlich des Linear-CMASK-Bits von GFX10. Dieses Bit zählt, weil eine gekachelte Adressgleichung auf einem linearen CMASK die Maske stillschweigend verstümmeln würde. Das Backend weist das nicht unterstützte Layout stattdessen zurück.

Clears und Tiefe

Richtige Clears von HTILE und DCC sind für die Layouts implementiert, die der Renderer versteht. Wiederholte Metadaten-Clears deckt der Prüflauf vulkan-smoke htile-clears ab. Eine zurückgesetzte Tiefenausdehnung wird nur für eine aktive, von HTILE gedeckte Oberfläche wiederhergestellt. Das hält den G-Buffer von Ghost of Yōtei intakt und lässt eine veraltete 1×1-UI-Tiefenbindung weiterhin an der Prüfung der Attachment-Größe scheitern.

Einfach abgetastete Tiefe und einfach abgetastetes Stencil des Gastes können importiert und zurückgeschrieben werden, wenn PS5_GPU_DEPTH_TRANSFER=1. Gebundene Stencil-Ebenen werden zu gepackten Attachments aus Tiefe plus Stencil, mit den Vergleichs- und Aktualisierungsoperationen des Gastes. Mehrfach abgetastete Tiefe nutzt den MSAA-Pfad. Komprimierter Z-Bereich und hierarchisches Z innerhalb von HTILE werden nicht vollständig ausgewertet.

Was weiterhin ausdrücklich bleibt

Die verbleibende Arbeit, wie sie in den GPU-Notizen steht, sind der Rest der Layer-Sichten, die verbleibenden komprimierten Zustände von DCC und FMASK, der Z-Bereich von HTILE und Hi-Z sowie CMASK-Zustände, die an FMASK gekoppelt sind. Ein nicht unterstützter MSAA-Import behält einen Clear bei der ersten Nutzung. Die komprimierte Oberfläche abzutasten, als bestünde sie aus gewöhnlichen Texeln, ist der Fehler, den diese Ablehnung vermeiden soll.

Die Unterstützung der Metadaten ist daher mit Absicht nur teilweise vorhanden. Die Zeiger werden dekodiert. Die Layouts, die geprüft wurden, werden eingehalten. Die Layouts, die nicht geprüft wurden, werden zurückgewiesen oder geleert.

Was umgesetzt ist

  • HTILE-Adressierung nach Muster 21, ein Dword je 8×8, in Blöcken von 32 KiB.
  • Clears von HTILE und DCC für die Layouts, die der Renderer versteht.
  • Erkennung von linearem CMASK, die eine gekachelte Gleichung auf einer linearen Maske zurückweist.
  • Zuschaltbarer Import und Rückschreiben von einfach abgetasteter Tiefe und einfach abgetastetem Stencil.

Was noch fehlt

  • Die vollständige Auswertung von Z-Bereich und hierarchischem Z in HTILE ist unvollständig.
  • Komprimierte Zustände von DCC und FMASK sowie CMASK, das an FMASK gekoppelt ist, bleiben außerhalb des schnellen Pfades.
  • Ein nicht unterstützter komprimierter Import wird geleert, statt als rohe Texel abgetastet zu werden.

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