- Commandes
- Mises à jour du processeur (CPU Updates)
- Graphics EOP
- Context rolls
- Durée d’exécution (Execution Duration)
- Occupation (Occupancy)
- Carte ESRAM (ESRAM Map)
- Goulots d’étranglement (Bottlenecks)
- Compteurs (Counters)
- Décompression (Decompression)
- Lancements (Kickoffs)
- Vidages (Flushes)
- Shader Engines inactifs (Idle Shader Engines)

Commandes
- Dans l’onglet Timeline, vous pouvez effectuer les opérations suivantes :
- Faire défiler de gauche à droite ou de haut en bas : cliquez avec le bouton droit de la souris et faites glisser.
- Sélectionner une plage de temps : cliquez avec le bouton gauche de la souris et faites glisser. Cliquez avec le bouton droit pour afficher plusieurs options de zoom.
- Ouvrir Timeline Counters : cliquez sur
, une petite icône de graphique en haut à droite de la fenêtre, à côté de la barre Filter. Pour plus de détails, consultez Compteurs PIX.
- Relier tous les Signals à leur appel Wait associé : sous Settings, sélectionnez Display correlation between all events.
- Dans l’onglet Timeline Counters, vous pouvez effectuer les opérations suivantes :
- Sélectionner l’ensemble de compteurs à l’aide de la liste déroulante Counter Set.
- Filtrer la liste des compteurs à l’aide de la barre Filter.
- Sélectionner un compteur particulier dans la liste Counters.
La sélection d’une valeur sur n’importe quelle chronologie met en surbrillance les valeurs correspondantes dans les autres chronologies, ainsi que l’événement dans la liste Events.
Mises à jour du processeur (CPU Updates)
Affiche la plage de temps pendant laquelle le processeur modifie un tampon utilisé par le GPU dans l’image actuelle. Cela peut indiquer un bogue de synchronisation entre le code du processeur et celui du GPU. Idéalement, CPU Updates doit être vide.Graphics EOP
Représentation hiérarchique de chaque événement de la liste des événements graphiques. Chaque bloc rectangulaire de cette chronologie indique le temps mis par l’événement pour se terminer depuis la fin de l’événement précédent (d’où le terme End of Pipe (EOP)). Imaginons que la liste Events ne contienne que deux appels de dessin qui se chevauchent. Appelons-les D1 et D2. D1 commence à 0,03 ms et se termine à 0,07 ms, tandis que D2 commence à 0,05 ms et se termine à 0,09 ms. Dans la chronologie Graphics EOP, vous verriez un bloc de 0,03 ms à 0,07 ms pour D1, et de 0,07 ms à 0,09 ms pour D2.Context rolls
Indique quand un context roll s’est produit. Un context roll représente une mise à jour coûteuse d’un registre de contexte. Cette chronologie indique quand un context roll s’est produit. Il n’existe que huit registres de contexte. Huit context rolls nous ramèneraient au premier registre. Si le premier registre est toujours en cours d’utilisation, le GPU se bloque en attendant que l’appel de dessin qui utilise ce registre de contexte se termine. À mesure que la densité des context rolls augmente, la couleur de la chronologie s’assombrit. Comme les context rolls sont coûteux, vous devez en limiter le nombre.Durée d’exécution (Execution Duration)
Affiche le temps réel de chaque opération. Pour reprendre notre exemple de Graphics EOP, dans la chronologie Execution Duration, vous pouvez vous attendre à voir deux rectangles représentant les appels de dessin : l’un pour D1 de 0,03 ms à 0,07 ms et l’autre pour D2 de 0,05 ms à 0,09 ms.Occupation (Occupancy)
Affiche un graphique à code couleur indiquant quels types de vagues sont actifs à un moment donné pour une séquence d’appels de dessin. La sélection d’un appel de dessin met en surbrillance les vagues qui lui appartiennent. Des types de vagues sont associés à chaque nuanceur. Une occupation élevée est préférable, car elle indique que les unités de traitement sont utilisées à une capacité plus élevée. Les creux dans la chronologie d’occupation ne sont pas souhaitables, car ils indiquent que le GPU était inactif à ce moment-là. Quatre types d’occupation sont affichés dans la chronologie du GPU sous forme de graphiques empilés à code couleur (selon l’étape de nuanceur qui utilise la ressource).- Wave Occupancy : représente graphiquement le nombre de vagues utilisées sur le matériel au fil du temps.
- Thread Occupancy : représente graphiquement l’utilisation totale des threads du GPU au fil du temps. Sur les consoles XBOX Series X|S, les vagues peuvent être exécutées sous forme de groupes de 32 (wave32) ou de 64 (wave64) éléments de travail. Le graphique d’occupation des vagues ne permet donc pas à lui seul de savoir dans quelle mesure les threads matériels sont utilisés.
- VGPR Occupancy : représente graphiquement l’utilisation totale des registres vectoriels à usage général (VGPR) du GPU au fil du temps. Cette chronologie permet d’identifier les débordements de registres qui pénalisent les performances.
- LDS Occupancy : représente graphiquement l’utilisation de la mémoire Local Data Share (LDS) du GPU au fil du temps. La mémoire LDS sert généralement à stocker des données partagées par plusieurs threads au sein d’une même étape et à transférer des données d’une étape de nuanceur à une autre.
Carte ESRAM (ESRAM Map)
Affiche le contenu de l’ESRAM à tout moment. À tout moment, vous pouvez voir ce qui se trouve dans l’ESRAM, le type de ressource et l’adresse de cette ressource. L’ESRAM ne concerne que le matériel XBOX One et XBOX One S.Goulots d’étranglement (Bottlenecks)
Affiche le temps passé dans chaque composant du GPU suivi par l’expérience Bottlenecks. Pointez sur un goulot d’étranglement pour afficher ses performances maximales (par exemple, 32 pixels peuvent être traités par cycle d’horloge). Cette chronologie indique quel pourcentage de ce maximum représente le goulot d’étranglement en cours à ce moment-là. Pour en savoir plus sur l’expérience Bottlenecks, consultez Dr. PIX.Compteurs (Counters)
Affiche un graphique présentant un instantané des compteurs de performances sélectionnés. Les graphiques représentent des relevés instantanés des compteurs de performances. Sélectionnez le compteur qui vous intéresse dans l’onglet Timeline Counters.Décompression (Decompression)
Affiche le temps passé à décompresser diverses textures ou images bitmap. Le GPU ne dispose que d’une quantité de mémoire limitée. Les textures et les images bitmap sont donc stockées sous forme compressée et décompressées lorsqu’elles doivent être utilisées. Cette chronologie indique le temps passé à la décompression.Lancements (Kickoffs)
Cet événement s’affiche lorsqu’un paquet (ou segment) de la file d’attente de commandes est soumis au GPU, c’est-à-dire lorsque les processeurs de commandes récupèrent un paquet dans la file d’attente de commandes et le transmettent au pipeline graphique. PIX traite la plupart des lancements de paquets de la file d’attente de commandes avec un vidage du GPU, ce qui diffère du runtime. Si votre capture contient de nombreux lancements de segments, les résultats de minutage et de trace peuvent être gonflés. Chaque graduation de la chronologie représente la soumission d’un paquet de la file d’attente de commandes.Vidages (Flushes)
En raison de l’exécution hautement parallèle des paquets sur le GPU, une synchronisation est nécessaire. Un vidage (flush) représente une barrière (ou clôture) définie par l’utilisateur dans le pipeline graphique, qui permet de vider les opérations et d’autoriser ce type d’événements de synchronisation.Surface Sync
Un événement de synchronisation de surface (surface sync) se produit lorsque le processeur de commandes reçoit la confirmation qu’une surface concernée est cohérente avec la mémoire. Les synchronisations de surface sont coûteuses et peuvent prendre de cent à mille cycles. Dans la plupart des cas, une synchronisation de surface implique également un context roll. Les événements de synchronisation de surface :- attendent l’arrêt des contextes graphiques précédents qui touchent la surface concernée ;
- vident divers caches ;
- réécrivent les caches ;
- demandent à l’analyseur de prélecture (PFP) d’attendre que le Micro-Engine (ME) termine le vidage.
