Aller au contenu
PS5PCEM
PartielGraphisme

Appels scalaires de shader

S_SWAPPC_B64 et S_CALL_B64 sauvegardent une adresse de retour complète et exécutent une sous-routine locale bornée, y compris un appelé placé après ENDPGM. Un shader de fetch AGC vérifié peut être lié de la même façon.

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

Appel et retour

L'opcode SOP1 0x21 est S_SWAPPC_B64. L'opcode SOPK 0x16 est S_CALL_B64, avec la cible à PC + 4 + sign_extend(SIMM16) * 4, ce qui inclut les appels vers l'arrière. Les deux écrivent l'adresse de l'instruction suivante dans la paire de SGPR de destination. Un S_SETPC_B64 correspondant y revient. CALL laisse SCC et EXEC inchangés.

Un SWAPPC dont la destination est nulle reste la continuation S_SETPC_B64 existante. Les cibles SWAPPC locales peuvent être résolues à partir d'un GETPC plus une addition ou une soustraction d'un immédiat pleine largeur. La cible est capturée même si l'instruction écrit aussi le registre de lien. Un appelé qui se trouve après ENDPGM est décodé jusqu'à son retour correspondant, à l'intérieur des bornes d'allocation et d'instructions. Une continuation matérielle ordinaire s'arrête encore avant les métadonnées finales.

Comment l'appel est abaissé

Le graphe de flot de contrôle gagne des arêtes d'appel et de retour explicites. L'appelé partage l'état des registres de l'appelant et utilise le répartiteur SPIR-V borné. Un appel non pris en charge ne peut pas retomber dans le chemin linéaire du flot de contrôle. La découverte des ressources côté hôte suit les appels et les retours, de sorte qu'un descripteur initialisé dans l'appelé reste visible.

Chaque appel pris en charge possède une paire de SGPR distincte, alignée sur un indice pair, de s0:s1 jusqu'à s104:s105, avec exactement un retour correspondant. Les appelés sont imbriqués ou séquentiels selon ce que le vérificateur autorise. Les cibles dynamiques générales, dont la destination est une valeur d'exécution arbitraire, restent non prises en charge.

Shaders de fetch et la sonde

Un shader de fetch externe est lié lorsque la paire de données utilisateur inchangée de l'appel correspond à l'adresse enregistrée par AGC. Le corps de fetch est décodé jusqu'à son SETPC de retour, et ce SETPC doit lire la paire de lien de l'appelant. Le cache d'analyse distingue un programme ordinaire d'un corps de fetch, de sorte qu'une insertion de fetch plus ancienne ne peut pas écraser le retour d'une sous-routine locale.

Une sonde GPU de 42 dispatches vérifie 21504 mots. Le rapport du 9 octobre ne revendique pas un nouveau jalon de jeu ni une nouvelle fréquence d'images à partir des seuls appels.

Ce qui est en place

  • S_SWAPPC_B64 et S_CALL_B64 avec une adresse de retour complète et un S_SETPC_B64 correspondant.
  • Appelés imbriqués et appelés placés après ENDPGM, dans les bornes existantes.
  • Liaison d'un shader de fetch AGC vérifié dont le retour lit le lien de l'appelant.
  • Une sonde de 42 dispatches couvrant 21504 mots.

Ce qui manque encore

  • Les cibles d'appel dynamiques générales ne sont pas prises en charge.
  • Un appel exige une paire de lien alignée sur un indice pair et un seul retour correspondant.
  • La sonde n'est pas un résultat en images par seconde.

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