Aller au contenu
PS5PCEM
PartielGraphisme

Chargements d'image multi-texels

IMAGE_LOAD_BY2, BY4, PCK2 et PCK4, y compris les formes à mip explicite, s'exécutent pour les formats 2D natifs mesurés. Un chargement BY renvoie des texels consécutifs. Un chargement PCK empaquette leurs bits bruts dans un seul registre.

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

BY et PCK

Un chargement BY écrit des texels consécutifs dans des VGPR distincts, les canaux étant ordonnés à l'intérieur de chaque texel. Un chargement PCK empaquette les bits bruts des composantes dans un VGPR de 32 bits, le premier texel dans les bits de poids faible. Les composantes signées sont tronquées à leur largeur de stockage. Les composantes UNORM sont reconstruites par une conversion à l'arrondi au pair le plus proche.

Le premier texel est aligné vers le bas sur un groupe de deux ou de quatre en X. Le test de bornes utilise la coordonnée d'origine, non alignée : le groupe entier doit tenir avant l'alignement, Y doit être dans l'intervalle, et le mip demandé doit exister. Un groupe invalide met à zéro chaque registre de résultat et laisse intactes les destinations qui ne le concernent pas. Les coordonnées invalides sont remplacées par des opérandes de fetch sûrs avant que Vulkan les voie.

Quels formats

BY2 avec DMASK 0x3 couvre R8 et R16 en UNORM, SNORM, UINT, SINT, et R16 FLOAT. BY2 avec DMASK 0xF couvre RG8 UNORM, SNORM, UINT et SINT. BY4 avec DMASK 0xF couvre R8 dans ces quatre types numériques. PCK2 avec DMASK 0x1 couvre R8, R16 et RG8 UNORM, UINT et SINT. PCK4 avec DMASK 0x1 couvre R8 UNORM, UINT et SINT. Les variantes à mip explicite de ces chargements utilisent les mêmes listes de formats.

Le backend fournit à la traduction le format natif exact. Des banques distinctes d'images échantillonnées UINT et SINT gardent les résultats entiers correctement typés, à côté des banques flottantes et de comparaison. Les coordonnées NSA, les registres d'adresse et de destination qui se chevauchent, et le masque EXEC ordinaire sont préservés.

Ce que le changement n'est pas

Le rapport du 9 octobre est un support partagé du shader et du backend. Il ne dépend pas d'un identifiant de jeu ni d'un hash de shader. Aucun résultat de compatibilité de jeu et aucun changement de fréquence d'images ne sont revendiqués à partir de ces seuls chargements.

Les stores, ainsi que les combinaisons de formats ou de descripteurs qui n'étaient pas dans l'ensemble mesuré, restent non pris en charge. Les gathers horizontaux sont la famille d'instructions voisine et ont leur propre page.

Ce qui est en place

  • Chargements 2D mesurés BY2, BY4, PCK2 et PCK4, avec et sans mip explicite.
  • Alignement de groupe, bornes vérifiées, et résultats mis à zéro pour un groupe invalide.
  • Banques distinctes d'images échantillonnées entières, pour que UINT et SINT restent typés.
  • Masques EXEC, coordonnées NSA et paires de registres qui se chevauchent, préservés.

Ce qui manque encore

  • Les stores d'image de ces formes ne sont pas implémentés.
  • Les formats et les modes de descripteur hors de la table mesurée sont rejetés.
  • Les tests n'établissent pas un nouveau chiffre d'images par seconde pour aucun titre.

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