Aller au contenu
PS5PCEM
PartielGraphisme

Detile des textures

Les textures PS5 sont stockées selon des motifs de swizzle GFX10, et non en lignes linéaires. PS5PCEM applique les équations d'adresse sur le CPU, et sur le GPU pour les grandes surfaces de 4, 8 et 16 octets qui s'y qualifient.

Notes du dépôt jusqu’au 10 octobre 2026

Les équations d'adresse

Une texture tuilée combine par XOR la coordonnée du pixel avec les bits de pipe, de banque et d'échantillon, pour que des pixels voisins tombent dans des canaux mémoire différents. PS5PCEM implémente les équations GFX10 pour les dispositions linéaires, les tuiles Standard de 256 octets, de 4 KiB et de 64 KiB, les tuiles de 64 KiB partiellement résidentes, la profondeur Z_X et la cible de rendu R_X. Le même contrat couvre les queues de mip et les blocs 3D épais.

Jusqu'à seize niveaux de mip sont placés du plus petit au plus grand. Les petits niveaux partagent les positions exactes des queues de mip de 4 KiB et de 64 KiB. Les ressources tridimensionnelles utilisent des blocs épais et des tranches de bloc en profondeur. Chaque sous-ressource expose un décalage d'octet source vérifié. Les adaptateurs de tampon, d'image, de compression par blocs, de cible couleur et de cible de profondeur n'allouent rien et rejettent un dépassement ou une plage trop courte.

Detile GPU et repli CPU

Les envois de premier usage des grandes surfaces standard de 4 octets en tuiles de 256 octets, de 4 KiB et de 64 KiB, ainsi que des grandes surfaces linéaires, passent par un detile sur le GPU. Le noyau de calcul reçoit une clé sans pointeur et un bloc de paramètres de 84 octets : taille de bloc, queue, pas, tranche, compte d'échantillons et décalage de tampon de 64 bits, dans une disposition stable entièrement en 32 bits. Les surfaces 2D et 3D standard et PRT de huit et de seize octets appartiennent à la même famille GPU.

Les autres familles restent sur le CPU, y compris RB+ et MSAA. Les équations Oberon de ces familles incluent les bits d'échantillon, et le chemin CPU les utilise. Le repli est un coût en bande passante. Ce n'est pas un autre format de pixel. Les diagnostics d'un draw en cours rapportent la famille, les dimensions du bloc 3D, le compte d'échantillons, la frontière de la queue de mip et la taille de l'allocation invitée.

Pourquoi le detile apparaît dans le temps d'image

Une texture renvoyée à chaque image paie le coût du detile à chaque image. Le suivi de pages, lorsqu'il est activé, laisse une page inchangée rester résidente, de sorte que le detile est sauté. Une texture que le GPU a lui-même réécrite doit tout de même être invalidée. Le detile ne remplace pas cette règle de cohérence.

Les vues échantillonnées appliquent le detile à la plage de mip nommée par le descripteur, y compris un niveau de base non nul. Le mip 0 de l'image Vulkan est alors le niveau de base de la vue. Les swizzles de composantes qui manquent encore au chemin de vue sont une limitation distincte de l'équation d'adresse.

Ce qui est en place

  • Équations d'adresse GFX10 linéaire, Standard, PRT, profondeur et cible de rendu, queues de mip et blocs 3D compris.
  • Detile de calcul GPU pour les grandes surfaces 2D et 3D standard et PRT de 4, 8 et 16 octets.
  • Detile CPU pour les familles restantes, bits d'échantillon MSAA et RB+ compris.
  • Décalages de sous-ressource vérifiés, qui rejettent les plages trop courtes et les dépassements.

Ce qui manque encore

  • Le detile MSAA et RB+ s'exécute sur le CPU.
  • Certains swizzles de composantes et certaines vues de couches sont encore incomplets.
  • Une surface que le CPU écrit après l'envoi doit être invalidée avant d'être de nouveau échantillonnée.

Mécanismes liés

Ce que ces pages décrivent

Le texte suit les notes d’architecture et les rapports d’octobre 2026 du dépôt PS5PCEM. Un test ciblé qui passe n’est ni une nouvelle cadence d’images ni une nouvelle partie terminée.

Toutes les technologies