Créer un projet à partir d’un fichier de nuanceur ou d’un PDB
Un projet Shader Explorer peut être créé en ouvrant depuis PIX un fichier source de nuanceur (.hlsl) ou un fichier d’informations de débogage (.pdb). L’ouverture d’un fichier source de nuanceur importe le code source du nuanceur dans le projet, mais vous devez spécifier les arguments de compilation dans l’onglet Compiler Options de la vue Source. L’ouverture d’un fichier d’informations de débogage importe le code source du nuanceur et les arguments de compilation de la compilation d’origine. Ceux-ci peuvent être modifiés dans l’onglet Compiler Options de la vue Source. Vous pouvez enregistrer le projet obtenu en sélectionnant Home > Save. (Le raccourci clavier est Ctrl+S.)Créer un projet à partir d’une GPU Capture
Un projet Shader Explorer peut être créé en exportant un nuanceur depuis la vue Pipeline d’une GPU Capture. Accédez au nuanceur qui vous intéresse et cliquez sur le bouton Export to Project dans la section Shader Explorer du panneau Commands de la vue Pipeline. L’exportation nécessite le chargement des informations de débogage du nuanceur (PDB), qui fournissent les sources du nuanceur. Vous pouvez enregistrer le projet obtenu en sélectionnant Home > Save. (Le raccourci clavier est Ctrl+S.)Générer des données de performances
Une fois un projet Shader Explorer ouvert, l’étape suivante consiste à générer les données de performances. Cela nécessite une compilation du nuanceur (avec quelques indicateurs supplémentaires ajoutés automatiquement par PIX). Cliquez sur le bouton Compile de la vue Source.


Pression sur les registres
La pression sur les registres a un impact direct sur les performances, car elle constitue l’un des principaux facteurs limitant l’occupation (nombre de vagues de nuanceur en cours). Pour l’occupation et la pression sur les registres à l’exécution, consultez les chronologies Wave Occupancy et VGPR Occupancy des GPU Captures.


Durée de vie des registres
La durée de vie des registres indique les parties d’un nuanceur où un registre est utilisé. Lorsque des registres sont utilisés et qu’une instruction nécessite des registres supplémentaires, davantage de registres doivent être alloués, ce qui augmente la pression sur les registres et peut réduire l’occupation. La visualisation de la durée de vie des registres de Shader Explorer montre la durée de vie de chaque registre dans le nuanceur. Survolez les barres de durée de vie pour voir comment un registre est utilisé dans un bloc donné. Les barres de durée de vie sont colorées selon le type de registre (SGPR ou VGPR), et une couleur distincte est utilisée pour les registres qui ne couvrent pas entièrement le bloc. Les registres qui ne couvrent pas entièrement le bloc, selon la formule (!LiveIn OR !Live Out) AND IsRead, sont des registres potentiels à cibler pour réduire la pression sur les registres.

Dépendances des instructions
Cliquez sur un opérande d’instruction pour mettre en surbrillance toutes les utilisations des registres utilisés par cet opérande. Cliquez sur le nom d’une instruction pour mettre en surbrillance toutes les utilisations des registres utilisés par tous les opérandes de l’instruction.
Flux de contrôle
Un bloc, également appelé bloc de base ou bloc de flux de contrôle, sert à diviser le flux de contrôle en sections plus petites qui peuvent être optimisées indépendamment. Le désassemblage de Shader Explorer est affiché sous forme de sections de blocs qui peuvent être réduites ou développées individuellement. Cliquez sur le lien [-] ou [+] pour réduire ou développer un bloc, ou cliquez avec le bouton droit sur le désassemblage pour accéder à l’option permettant de réduire ou de développer tous les blocs. Chaque bloc est lié à ses successeurs, qui sont affichés après le nom du bloc. Survolez un successeur pour afficher le type de flux de contrôle, ou cliquez dessus pour y accéder.
Couleurs des instructions
Par défaut, les instructions de nuanceur sont colorées selon leur catégorie (VALU, SALU, etc.). Utilisez le bouton bascule Instruction Colors du panneau Options de la vue Block Disassembly pour configurer le mode de couleur. L’option de couleur Rate permet d’identifier rapidement les instructions émises à un rythme différent du rythme par défaut (1 instruction par cycle sur XBOX Series X|S). Parmi celles-ci figurent les opérations mathématiques compactées, les VALU F64 et les VALU transcendantes.
VALU transcendantes (XBOX Series X|S)
L’unité VALU comporte deux pipelines mathématiques internes : normal et transcendant. Le pipeline normal émet les instructions en 1 cycle d’horloge et le pipeline transcendant émet les instructions 32 bits en 4 cycles d’horloge. Les instructions 64 bits utilisent les deux pipelines et sont émises en 16 cycles d’horloge. Le matériel peut émettre une instruction VALU par cycle vers l’un ou l’autre des pipelines, mais pas vers les deux en même temps. Comme l’émission des instructions transcendantes prend plusieurs cycles, l’exécution des instructions normales et transcendantes peut se chevaucher.Naviguer entre les instructions et le code source
Lorsque le code source en ligne est activé (via le panneau Options de la vue Block Disassembly), des commentaires indiquant les emplacements correspondants dans le code source sont insérés dans le désassemblage.


Statistiques du nuanceur
Le panneau Details de la vue Block Disassembly fournit des statistiques sur le nuanceur compilé. Shader Details : statistiques générales sur le nuanceur. Block Details : statistiques sur l’utilisation des registres du bloc sélectionné. Cliquez sur une instruction dans la vue Block Disassembly pour sélectionner le bloc qui la contient. Compiler Stats : sortie complète de DxcXboxShaderStatisticsV2 issue de DXCompiler.
Variables et registres
Le panneau Variables de la vue Block Disassembly affiche le mappage des variables aux registres pour l’instruction sélectionnée. Cliquez sur une instruction dans la vue Block Disassembly pour la sélectionner.

Requêtes de données
Le panneau Query de la vue Block Disassembly permet d’écrire des requêtes sur les données contenues dans le projet. Des exemples de requêtes sont fournis à titre de référence. Les requêtes personnalisées peuvent être enregistrées et utilisées dans plusieurs projets Shader Explorer.
Révisions
Le panneau Revisions de la vue Source permet d’itérer sur plusieurs versions d’un nuanceur. Cliquez sur le bouton Create New pour créer une copie de la révision actuellement sélectionnée.

Coût des instructions à l’exécution
Les fonctionnalités de Shader Explorer peuvent être étendues en intégrant des données de coût des instructions à l’exécution. Ces données sont produites par Shader Trace dans les GPU Captures.Shader Trace
Dans une GPU Capture, identifiez un dessin ou une distribution intéressant et sélectionnez-le dans la vue Events. Ouvrez la vue Shader Trace, assurez-vous que l’analyse est en cours, puis cliquez sur le bouton Generate Trace.


Performances au niveau des instructions
Le coût des instructions est affiché à côté de chaque instruction lorsque des données de coût des instructions à l’exécution sont disponibles.


Performances au niveau du code source
Le coût des instructions est agrégé pour le code source lorsque des données de coût des instructions à l’exécution sont disponibles. Survolez le coût d’une ligne de code source pour afficher la répartition détaillée des instructions qui y contribuent.


Les données de coût des instructions sont disponibles mais ne correspondent pas
Pour utiliser les données de coût des instructions à l’exécution, le hachage du nuanceur dont proviennent les données de coût doit correspondre au hachage du nuanceur compilé pour produire les données de Shader Explorer. Si les hachages ne correspondent pas, le message suivant s’affiche.
Les données de coût des instructions sont disponibles mais le code source a été modifié
Pour utiliser les données de coût des instructions à l’exécution au niveau du code source, les fichiers sources doivent correspondre à ceux de la compilation d’origine. Une fois les fichiers sources modifiés, les visualisations des performances au niveau du code source sont masquées et le message suivant s’affiche.
Réimporter un nuanceur dans une GPU Capture
Une révision de projet Shader Explorer peut être importée dans une GPU Capture depuis la vue Pipeline de la GPU Capture. Accédez au nuanceur qui vous intéresse et cliquez sur le bouton Import from Project dans la section Shader Explorer du panneau Commands de la vue Pipeline.


Procédures
Identifier la pression maximale sur les registres
Utilisez les boutons Go to Max du panneau Options de la vue Block Disassembly pour accéder au point unique de pression maximale.
Identifier les instructions à rythme réduit
Utilisez le bouton bascule Instruction Colors du panneau Options de la vue Block Disassembly pour configurer le mode de couleur. Pour plus d’informations, consultez Couleurs des instructions.Identifier les registres à cibler pour réduire la pression
Utilisez la visualisation de la durée de vie des registres pour comprendre l’allocation et la durée de vie des registres. Les registres qui ne couvrent pas entièrement un bloc, selon la formule (!LiveIn OR !Live Out) AND IsRead, sont des registres potentiels à cibler pour réduire la pression sur les registres. Une couleur distincte leur est attribuée pour les identifier rapidement.
Masquer les visualisations pour gagner de l’espace à l’écran
Utilisez les boutons bascules Visualization Placement du panneau Options de la vue Block Disassembly pour déplacer ou masquer les visualisations.
