Moteur de rendu Vulkan
Le backend Vulkan charge le pilote à l'exécution, exige Vulkan 1.2, et présente les images invitées par une swapchain. Les cibles de rendu, les images de stockage et les pipelines restent résidents d'un draw à l'autre.
Notes du dépôt jusqu’au 10 octobre 2026
Périphérique et mémoire
Le moteur de rendu charge lui-même le chargeur Vulkan de la plateforme, de sorte que la construction n'a pas besoin des en-têtes du SDK Vulkan. L'initialisation demande Vulkan 1.2, la version qui accepte le SPIR-V 1.5 du traducteur, et préfère un périphérique discret dont une famille de files peut faire à la fois le graphique et le calcul. Les couches de validation sont demandées dans les builds de débogage lorsqu'elles sont installées.
Une disposition de descripteurs contient 64 tampons de stockage, des tableaux distincts de 64 images échantillonnées 2D et 3D, et des images de stockage typées. Un anneau de 512 ensembles, une arène d'envoi de 128 MiB et des cibles de rendu invitées persistantes gardent sur le périphérique les ressources d'une image. Les traductions graphiques utilisent un cache de 256 MiB et de 1024 entrées. Une scène en flux avait dépassé l'ancien budget de 64 MiB et retraduisait les mêmes modules à chaque image.
Pipelines et timelines
La compilation des pipelines utilise deux workers par défaut. PS5_GPU_COMPILER_WORKERS peut en fixer de un à quatre. PS5_GPU_ASYNC_PIPELINES=0 revient à la compilation synchrone et coupe le préchauffage du calcul. Le préchauffage rejoue, au lancement suivant, les modules de calcul déjà compilés dans le cache du pilote. Il n'en fait jamais le dispatch, et il détruit les pipelines temporaires. Le cache du pilote est aussi stocké dans vulkan_pipeline_cache.bin, jusqu'à 4 GiB. Un fichier corrompu est écarté. Il ne peut affecter que le temps de démarrage.
Le profil de compatibilité par défaut attend chaque lot soumis. L'ordonnanceur à timeline, sélectionné avec PS5_GPU_TIMELINE_SCHEDULER=1, laisse plusieurs lots en vol et n'attend qu'à une vraie relecture, à un point de synchronisation invité, ou à un anneau de ressources épuisé. Un titre, PPSA25872, active de lui-même cet ordonnanceur et la réécriture différée des petits stockages, après des comparaisons mesurées. La disposition d'image est suivie par aspect, mip et couche de tableau, et les barrières viennent de l'usage précédent de cette sous-ressource.
Formats et résidence
Cinquante-six formats hôtes sont atteignables, dont BC1 à BC7, les canaux entiers et normalisés, R16 et RG16, le demi-flottant et RGBA32_FLOAT. Les allocations d'images invitées partagent un seul registre d'alias entre les usages couleur, profondeur, stockage et échantillonnage. Une passe ultérieure peut échantillonner une cible de profondeur qu'une passe antérieure a écrite, sans aller-retour par la mémoire invitée, lorsque les signatures correspondent. Les réinterprétations et les recouvrements partiels repassent par la mémoire invitée.
Le detile de calcul sur le GPU couvre les surfaces 2D et 3D standard et PRT de 4, 8 et 16 octets. Le detile RB+ et MSAA s'exécute encore sur le CPU. Les cibles UNORM 11/11/10 empaquetées à un seul échantillon se mélangent par une copie vers un tampon de stockage, puis un dépaquetage, un mélange et un rempaquetage de fragment. VideoOut est la swapchain au-dessus de ces images.
Ce qui est en place
- Sélection à l'exécution d'un périphérique Vulkan 1.2, une swapchain, et des cibles de rendu résidentes.
- Cinquante-six formats hôtes, un suivi de disposition par sous-ressource, et un registre d'alias d'images.
- Deux workers de compilation, un cache de pilote persistant, et un préchauffage de calcul facultatif.
- Un ordonnanceur à timeline sur option, un titre l'activant par défaut.
Ce qui manque encore
- Le profil par défaut attend encore chaque lot. La soumission à timeline est sur option.
- Le detile RB+ et MSAA utilise le CPU.
- L'éclairage des jeux et chaque chemin de métadonnées compressées ne sont pas impliqués par la liste des formats.
Mécanismes liés
Ce que ces pages décrivent