> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PIX Shader Explorer pour l'optimisation des nuanceurs sur XBOX Series X|S

> Utilisez PIX Shader Explorer sur XBOX Series X|S pour inspecter la pression sur les GPR, la durée de vie des registres et le coût des instructions, puis itérez sur le code source des nuanceurs ou sur des projets PDB.

PIX peut fournir des informations sur les facteurs qui influent sur les performances des nuanceurs, tels que la pression sur les GPR, le mappage des variables aux registres, la durée de vie des registres, le coût d'exécution des instructions, le rythme d'émission des instructions, etc. Itérez sur vos nuanceurs, générez des données de performances et validez les effets de vos modifications. Shader Explorer est disponible à partir de la XBOX Series X|S.

## 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**.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_compile.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=35ca9e3c1768911920b3bac2f3d840ac" alt="Capture d'écran de la vue Source indiquant l'emplacement du bouton Compile" width="273" height="89" data-path="images/gdk/tools/pix_shader_explorer_compile.png" />

Si vous souhaitez utiliser un autre compilateur que celui fourni avec PIX, modifiez le champ **Compilers Path** de l'onglet **Compiler Options** de la vue **Source**.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_compilers_path.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=96428c00a5f0ff373eb34ad46c9e96c3" alt="Capture d'écran de la vue Source indiquant où modifier le champ Compilers Path" width="279" height="144" data-path="images/gdk/tools/pix_shader_explorer_compilers_path.png" />

Une fois la compilation terminée, les vues complémentaires sont renseignées avec les données de la compilation. En cas d'erreurs de compilation, elles sont affichées dans le panneau **Errors** de la vue **Source**. Double-cliquez sur une erreur pour accéder à l'emplacement correspondant dans le code source.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_compile_errors.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=91ba7e20cee7c7da070743bf0d3984b8" alt="Capture d'écran de l'onglet Errors affichant plusieurs erreurs de compilation" width="521" height="137" data-path="images/gdk/tools/pix_shader_explorer_compile_errors.png" />

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_gpu_occupancy.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=9276052a3bd1695f68c3fb9687846c32" alt="Capture d'écran des chronologies Wave Occupancy et VGPR Occupancy dans les GPU Captures" width="796" height="271" data-path="images/gdk/tools/pix_gpu_occupancy.png" />

La visualisation de la pression sur les registres de Shader Explorer montre l'allocation des registres au niveau des blocs et au niveau des instructions. Les segments rouges des barres de pression indiquent une augmentation de l'utilisation à cette instruction. Survolez la visualisation de la pression pour afficher les valeurs d'utilisation d'une instruction.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_register_pressure.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=a2445b00e19ff103805e90916fcef5e1" alt="Capture d'écran du survol affichant les valeurs d'utilisation d'une instruction" width="496" height="240" data-path="images/gdk/tools/pix_shader_explorer_register_pressure.png" />

Utilisez le bouton bascule **Register Types** du panneau **Options** de la vue **Block Disassembly** pour configurer les types de registres affichés (SGPR, VGPR ou les deux).

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_options.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=9e697c93d996ec698c93a697c059d5d5" alt="Capture d'écran de l'option de visualisation indiquant où configurer les types de registres" width="203" height="129" data-path="images/gdk/tools/pix_shader_explorer_disasm_options.png" />

<a id="PixShaderExplorerRegisterLifetimes" />

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_register_lifetimes.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=4ed2f22049adffae91438ce163ee9a6c" alt="Capture d'écran de la visualisation de la durée de vie des registres" width="611" height="289" data-path="images/gdk/tools/pix_shader_explorer_register_lifetimes.png" />

Utilisez le bouton bascule **Register Types** du panneau **Options** de la vue **Block Disassembly** pour configurer les types de registres affichés (SGPR, VGPR ou les deux).

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_options.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=9e697c93d996ec698c93a697c059d5d5" alt="Capture d'écran de l'option de visualisation indiquant où configurer les types de registres" width="203" height="129" data-path="images/gdk/tools/pix_shader_explorer_disasm_options.png" />

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_dependencies.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=0544fde27eba3bfcf7cb2434df53c8f5" alt="Capture d'écran de registres mis en surbrillance" width="366" height="214" data-path="images/gdk/tools/pix_shader_explorer_disasm_dependencies.png" />

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_block.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=144bca4acc835248567b7a6f0cad0db7" alt="Capture d'écran du survol affichant le type de flux de contrôle d'un successeur" width="345" height="75" data-path="images/gdk/tools/pix_shader_explorer_disasm_block.png" />

<a id="PixShaderExplorerInstructionColors" />

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_color_rate.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=09f9e4b4647025aa1e4ba95dda3b7838" alt="Capture d'écran d'instructions codées par couleur selon leur rythme" width="560" height="283" data-path="images/gdk/tools/pix_shader_explorer_disasm_color_rate.png" />

### 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_options.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=9e697c93d996ec698c93a697c059d5d5" alt="Capture d'écran de l'activation du code source en ligne dans le panneau Options" width="203" height="129" data-path="images/gdk/tools/pix_shader_explorer_disasm_options.png" />

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_inline_source.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=2c11aa735b3e879bd642e746363b94b0" alt="Capture d'écran des commentaires insérés dans le désassemblage avec des liens vers la vue Source" width="508" height="248" data-path="images/gdk/tools/pix_shader_explorer_inline_source.png" />

Cliquez sur le nom d'une instruction dans la vue **Block Disassembly**, ou sur le lien \[src] au-dessus de l'instruction, pour accéder à l'emplacement correspondant dans la vue **Source**.

Le lien \[src] représente le niveau le plus profond de la pile d'appels et chaque lien \[inl] successif représente un emplacement inline à un niveau supérieur de la pile d'appels. Survolez ces liens pour afficher rapidement le code source correspondant, ou cliquez dessus pour accéder à l'emplacement correspondant dans la vue **Source**.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_link.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=df7a49331bfd1c5c3e549dcc01d0293b" alt="Capture d'écran de l'aperçu de la vue Source affiché en cliquant sur le lien src dans les commentaires du désassemblage" width="652" height="205" data-path="images/gdk/tools/pix_shader_explorer_disasm_link.png" />

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_details.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=ed2a86a0cb3b41687fee307be789d3da" alt="Capture d'écran du panneau de détails Compiler Stats" width="202" height="756" data-path="images/gdk/tools/pix_shader_explorer_disasm_details.png" />

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_registers.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=cf4970245e1168be922f1063ffdeac37" alt="Capture d'écran du panneau Variables avec Registers sélectionné" width="696" height="234" data-path="images/gdk/tools/pix_shader_explorer_registers.png" />

Par défaut, cette vue affiche les registres utilisés par les opérandes d'entrée de l'instruction. Pour afficher tous les registres actifs au décalage de l'instruction sélectionnée, basculez de « Inputs » à « Live ». Pour un affichage centré sur les variables du code source, basculez de « Registers » à « Variables ».

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_variables.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=fe92937c34c48e4b1e040364c1e9ba3e" alt="Capture d'écran du panneau Variables avec Variables sélectionné" width="695" height="235" data-path="images/gdk/tools/pix_shader_explorer_variables.png" />

Cliquez sur le nom de la variable source correspondante pour accéder à la déclaration de la variable, ou cliquez sur les liens Live Start et Live End pour accéder à l'endroit où la variable entre dans la portée ou en sort.

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_query.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=e8fbf3c411cca282e52b09dbe6277ff2" alt="Capture d'écran du panneau Query dans la vue Block Disassembly" width="697" height="240" data-path="images/gdk/tools/pix_shader_explorer_query.png" />

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_revisions.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=845af36018dbef1122ae4589e600d76b" alt="Capture d'écran de la vue Source indiquant l'emplacement du panneau Revisions" width="519" height="189" data-path="images/gdk/tools/pix_shader_explorer_revisions.png" />

Pour comparer les modifications entre les révisions, cliquez avec le bouton droit sur le texte de la vue **Block Disassembly** et sélectionnez **Compare to Revision**. Si vous n'avez pas configuré d'outil de comparaison de texte dans les paramètres de PIX, vous serez invité à le faire. Indiquez le chemin de votre outil de comparaison de texte préféré et les éventuels arguments supplémentaires ; PIX fournira deux fichiers comme deux premiers arguments.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_revisions_compare.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=ee63b8c615885dd41813872173fa6ec5" alt="Capture d'écran de l'option de menu Compare to Revision dans la vue Block Disassembly" width="682" height="285" data-path="images/gdk/tools/pix_shader_explorer_revisions_compare.png" />

<a id="PixShaderExplorerShaderTrace" />

## 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**.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_gpu_shadertrace.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=f662d0057a8f89cf3ef7ba9afd5b2d5e" alt="Capture d'écran d'une trace générée dans la vue Shader Trace" width="1436" height="758" data-path="images/gdk/tools/pix_gpu_shadertrace.png" />

Une fois la trace terminée, cliquez sur une vague de nuanceur correspondant au nuanceur qui vous intéresse. Les vagues sont colorées selon leur étape matérielle.

Le panneau **Shader Stats** s'ouvre et calcule le coût d'exécution de chaque instruction, en moyenne sur chaque vague du nuanceur.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_gpu_shadertrace_shaderstats.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=c5141aed16565235338e74a853ee2581" alt="Capture d'écran du panneau Shader Stats" width="1028" height="256" data-path="images/gdk/tools/pix_gpu_shadertrace_shaderstats.png" />

Une fois les **Shader Stats** chargées, le bouton **Export to Project** est activé dans le panneau **Options**. Cliquez sur ce bouton pour ouvrir le nuanceur et les données de coût des instructions à l'exécution dans un projet Shader Explorer. Ils peuvent être ouverts dans un nouveau projet ou en tant que nouvelle révision dans un projet ouvert. L'exportation nécessite le chargement des informations de débogage du nuanceur (PDB), qui fournissent les sources du nuanceur et les arguments de compilation.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_gpu_shadertrace_shaderstats_export.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=f76dfe1caceb7fd85b82c664aa3dd677" alt="Capture d'écran de la boîte de dialogue qui s'ouvre lorsque vous cliquez sur le bouton Export to Project" width="402" height="202" data-path="images/gdk/tools/pix_gpu_shadertrace_shaderstats_export.png" />

Si la vague se compose de plusieurs nuanceurs, par exemple ES+GS, LS+HS ou DXR, vous pouvez sélectionner l'étape de nuanceur à exporter. Shader Explorer ne prend actuellement en charge le profilage que d'une seule étape de nuanceur à la fois.

Vous pouvez enregistrer le projet obtenu en sélectionnant **Home** > **Save**. (Le raccourci clavier est Ctrl+S.)

### 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_cost_block.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=9333169b03739517eba2b0ad3f1bb9f9" alt="Capture d'écran du graphique en secteurs du coût des instructions" width="540" height="199" data-path="images/gdk/tools/pix_shader_explorer_disasm_cost_block.png" />

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_cost_instruction.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=0a209101b2d4304bf5ddcf411e289ecf" alt="Capture d'écran de la vue détaillée du coût d'une instruction" width="539" height="207" data-path="images/gdk/tools/pix_shader_explorer_disasm_cost_instruction.png" />

Utilisez le bouton bascule **Instruction Cost Mode** du panneau **Options** pour configurer le type de coût affiché (Percent of Longest, Percent of Total, Clocks, Percent Waves Visited, etc.). Survolez le coût d'une instruction pour afficher la répartition détaillée des données.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_cost_mode.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=9c66dbc426d2b450264c4ddc2b4a0ebb" alt="Capture d'écran de l'option de menu permettant de modifier le mode de coût des instructions" width="198" height="50" data-path="images/gdk/tools/pix_shader_explorer_disasm_cost_mode.png" />

### 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_source_cost.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=f33d8984cbad898b7dcc4015f4b54f66" alt="Capture d'écran de la répartition des instructions contribuant au coût d'exécution d'une ligne de code source" width="492" height="369" data-path="images/gdk/tools/pix_shader_explorer_source_cost.png" />

Utilisez le panneau **Performance** de la vue **Source** pour configurer les visualisations au niveau du code source. Lorsque le mode **Aggregate** est sélectionné, le coût du code source est l'agrégat de toutes les instructions associées à la ligne de code source, quel que soit le nombre de fois où elle a été appelée ou l'endroit d'où elle a été appelée. Cela fournit un coût total sur l'ensemble du nuanceur. Dans ce mode, le panneau **Performance** affiche le code source trié par coût.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_source_cost_aggregate.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=aa62e833a9e1ac8039a8547fb4e7c2d0" alt="Capture d'écran de la vue du coût agrégé des performances au niveau du code source" width="704" height="190" data-path="images/gdk/tools/pix_shader_explorer_source_cost_aggregate.png" />

Lorsque le mode **Callstacks** est sélectionné, le coût du code source est affiché par rapport à sa pile d'appels. Cela permet de comprendre le coût du code source dans son contexte d'exécution. Dans ce mode, le panneau **Performance** affiche le code source dans une disposition appelant/appelé qui permet de parcourir les piles d'appels en cliquant sur le code source lié.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_source_cost_callstacks.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=41072bffbdf855d49edd54c13d0964f5" alt="Capture d'écran du coût du code source affiché par rapport à sa pile d'appels" width="706" height="191" data-path="images/gdk/tools/pix_shader_explorer_source_cost_callstacks.png" />

Lorsque le mode **VALU-only** est sélectionné, le coût du code source n'est affiché que pour les instructions VALU. Cela permet de se concentrer sur le code source qui contribue à l'utilisation des VALU.

### 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_mismatch_hash.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=90fc9dfd1a6b6e048087006c3175d667" alt="Capture d'écran du message indiquant que des données de coût des instructions sont disponibles mais ne correspondent pas au nuanceur compilé pour cette révision." width="705" height="124" data-path="images/gdk/tools/pix_shader_explorer_mismatch_hash.png" />

Pour résoudre cette incohérence, vous devez compiler dans Shader Explorer avec le compilateur correspondant aux données de coût des instructions à l'exécution. Cliquez sur le lien pour localiser le compilateur correspondant. La version du compilateur requise est affichée dans la boîte de dialogue Open Folder. En général, le compilateur provient d'une installation du GDK (C:\Program Files (x86)\Microsoft GDK\<version>\GXDK\bin\<platform>). Une fois le compilateur localisé, son chemin est renseigné dans l'onglet **Compiler Options** de la vue **Source** et le nuanceur est recompilé avec le compilateur correspondant.

### 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_mismatch_source.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=7acdbd54b43288602702987857b083d8" alt="Capture d'écran du message indiquant que des données de coût des instructions sont disponibles mais que les fichiers sources ont été modifiés, ce qui invalide les données de coût au niveau du code source." width="704" height="125" data-path="images/gdk/tools/pix_shader_explorer_mismatch_source.png" />

Pour résoudre ce problème, [importez le projet](#PixShaderExplorerImport) dans une GPU Capture, exécutez à nouveau [Shader Trace](#PixShaderExplorerShaderTrace) et exportez la trace dans votre projet Shader Explorer en tant que nouvelle révision avec des données de coût des instructions à l'exécution mises à jour.

<a id="PixShaderExplorerImport" />

## 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**.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_gpu_shader_view.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=24ad5314792f27bef62b16be856c6d2b" alt="Capture d'écran de l'emplacement du bouton Import from Project dans la section Shader Explorer du panneau Commands." width="1231" height="306" data-path="images/gdk/tools/pix_gpu_shader_view.png" />

Sélectionnez ensuite le projet Shader Explorer à partir duquel effectuer l'importation (il doit être ouvert dans PIX) et la révision à importer. L'importation nécessite que les sources du nuanceur correspondent entre la révision Shader Explorer et la GPU Capture.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_gpu_shader_view_import_shader_explorer.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=e30836e65c4e41fdb5ab50488ce7cb2e" alt="Capture d'écran de la boîte de dialogue d'importation d'un nuanceur, avec les listes déroulantes de sélection du projet et de la révision." width="400" height="202" data-path="images/gdk/tools/pix_gpu_shader_view_import_shader_explorer.png" />

Une fois un nuanceur importé dans une GPU Capture, la modification peut être appliquée via Edit-and-Continue, qui intègre le nuanceur à la relecture. Une fois la modification appliquée, de nouvelles données de coût des instructions à l'exécution peuvent être générées avec [Shader Trace](#PixShaderExplorerShaderTrace) pour être réexportées dans le projet Shader Explorer en vue d'une analyse plus approfondie.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_gpu_edit_apply.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=6cec2498421ea6594403609090d085f6" alt="Capture d'écran du bouton Edit permettant d'appliquer la modification du nuanceur importé." width="423" height="29" data-path="images/gdk/tools/pix_gpu_edit_apply.png" />

## 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_actions.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=0c53f21e6ce247e8d6e14d66f87f6d62" alt="Capture d'écran du menu des options de Block Disassembly présentant les options Go to Max Cost, Max SGPRs et Max VGPRs." width="203" height="122" data-path="images/gdk/tools/pix_shader_explorer_disasm_actions.png" />

Utilisez la vue **Block Graph** pour parcourir les blocs du nuanceur sous forme de graphe. Effectuez un zoom arrière pour voir les blocs dimensionnés et colorés selon leur pression sur les registres. Les blocs ayant la pression la plus élevée sont les plus grands et les plus foncés.

### 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](#PixShaderExplorerInstructionColors).

### Identifier les registres à cibler pour réduire la pression

Utilisez la visualisation de la [durée de vie des registres](#PixShaderExplorerRegisterLifetimes) 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_register_lifetimes_optimize.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=257d17107c55a97c87866caaa9c4138d" alt="Capture d'écran de la visualisation de la durée de vie des registres, avec deux couleurs distinctes pour différencier les registres qui couvrent un bloc et ceux qui ne le couvrent pas." width="614" height="384" data-path="images/gdk/tools/pix_shader_explorer_register_lifetimes_optimize.png" />

### 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.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/pix_shader_explorer_disasm_visualizations.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=8ec1b730e2c66a11da05b9dd5c759466" alt="Capture d'écran de l'option de menu Visualizations dans la vue Block Disassembly." width="200" height="244" data-path="images/gdk/tools/pix_shader_explorer_disasm_visualizations.png" />


## Related topics

- [PIX Shader Explorer pour l'analyse des nuanceurs GPU](/fr/tools/tools-console/pix/shader-explorer/index.md)
- [Xdd2024](/fr/build/core-features/graphics/overviews/presentations/xdd2024/index.md)
- [Optimisation guidée par profil (PGO) pour les titres XBOX](/fr/tools/tools-console/pgo/index.md)
- [Environnement et outils de développement de jeux sur console XBOX](/fr/tools/tools-console/gc-tools-console-toc.md)
- [Outils et API de l'environnement XBOX](/fr/tools/tools-console/gc-xbox-tools-and-apis-toc.md)
