Skip to main content
Performance Investigator for XBOX (PIX) est un outil d’analyse des performances et de débogage destiné aux développeurs de jeux vidéo qui créent des titres DirectX 12. Cette rubrique présente la vue Liste de vérification (Checklist) de PIX (démos un et deux) et décrit cinq exemples de cas d’utilisation (démos trois à sept). La nouvelle fonctionnalité Liste de vérification de PIX est votre guichet unique pour l’optimisation GPU. Il s’agit d’une liste organisée de pratiques exemplaires, dont toutes les violations sont signalées directement dans la capture. Découvrez comment PIX a automatisé bon nombre des vérifications de performance qui mènent le plus souvent à des optimisations et à des améliorations lors des revues de performance GPU courantes des jeux.
Ces informations étaient à jour en avril 2022. Plusieurs fonctionnalités ont changé ou ont été mises à jour depuis.

Présentation de la liste de vérification PIX

La liste de vérification PIX fournit des conseils automatisés sur la performance et l’exactitude du GPU. Les données de profilage capturées par PIX peuvent servir à analyser les problèmes de performance du GPU, du CPU, de la mémoire et des E/S de fichiers. La liste de vérification PIX a été livrée avec la version d’avril 2021 du Microsoft Game Development Kit with XBOX Extensions (GDKX) et s’est améliorée dans les versions subséquentes. Si vous utilisez encore la version d’avril 2021 du GDK, veuillez effectuer la mise à jour sans tarder. La liste de vérification PIX est offerte uniquement sur XBOX Series X|S. XBOX One X n’a pas été incluse, car cela aurait retiré du temps d’ingénierie à XBOX Series X|S. Toutefois, les conseils de performance sont souvent les mêmes pour les deux plateformes.

Avantages de l’automatisation

L’automatisation peut détecter les éléments suivants :
  • Des problèmes que vous ne vérifiez pas
  • De petits problèmes qui se produisent de nombreuses fois
  • Des problèmes qui exigent une connaissance de la capture entière
PIX peut détecter des choses que vous ne vérifiez pas. Certaines semblent si improbables que vous ne penseriez peut-être même pas à les vérifier. Par exemple, sur XBOX Series X, il existe deux types de mémoire GPU : optimale et standard. On a tendance à supposer que tout ce qui se trouve dans une capture GPU réside en mémoire optimale, mais ce n’est pas toujours le cas. Vous ne vérifiez peut-être pas cela, mais PIX peut le faire pour vous. PIX peut vérifier de petites choses qui se produisent de nombreuses fois. Individuellement, ces choses n’ont pas beaucoup d’effet. Toutefois, savoir qu’elles se produisent aussi souvent peut être important. Récemment, l’ATG a remarqué deux cas où un titre réinitialisait la valeur de référence du stencil à chaque appel de dessin. Si vous le voyez dans un seul appel de dessin, ça va. Si vous le voyez dans chaque appel de dessin, cela devient un problème. PIX détecte ce genre de répétition. PIX peut détecter des choses que vous ne sauriez pas avant d’avoir vu la capture entière. Par exemple, vous pourriez avoir créé une ressource en tant que cible de rendu sans jamais la lier en tant que cible de rendu. Vous devriez examiner chaque appel de dessin de la capture pour le vérifier, mais PIX peut le faire pour vous.

Démo un : Repérer la liste de vérification PIX et y naviguer

Cette section décrit la vue Liste de vérification. Figure 1. Fenêtre de vue d’ensemble de PIX. Écran de vue d'ensemble de PIX La figure 1 montre l’emplacement de la liste de vérification dans la disposition par défaut lorsque PIX est ouvert dans le GDK de mars 2022. Figure 2. Vue Liste de vérification de PIX. Vue Liste de vérification de PIX La figure 2 montre la vue Liste de vérification de PIX. Un crochet vert indique que l’élément a réussi la vérification. Des icônes rouges, orange ou jaunes signifient que la vérification a échoué. Puisqu’il s’agit d’une liste de vérification, elle contient des éléments ou des vérifications que l’ATG vous recommande de passer en revue. Par exemple, l’élément Use Async Compute Queue. La figure 2 montre que cela a été fait et que l’élément affiche un crochet vert; la vérification a donc réussi. Figure 3. Exemple d’infobulle PIX Collected when running analysis. Exemple d'infobulle PIX Tout ce qui n’est pas un crochet vert signifie que le problème requiert votre attention. Une icône rouge, orange ou jaune vous avertit que l’élément de la liste de vérification a échoué. Un sablier signifie que la vérification requiert une action que vous n’avez pas encore effectuée. Les infobulles vous indiquent quoi faire. Dans la figure 3, l’infobulle est Collected when running analysis. Cela indique que vous devez exécuter une analyse. Figure 4. Exemple d’infobulle PIX Collected when opening the Resources tab. Autre exemple d'infobulle PIX La figure 4 montre l’infobulle Collected when opening the Resources tab. Figure 5. Vue Events de PIX. Vue Events de PIX Les éléments en échec peuvent être ouverts. Selon l’élément, PIX fournit des informations et des liens utiles. La figure 5 montre un élément de la liste de vérification avec un lien qui fait référence à l’ID global 4477. La sélection du lien vous mène à un événement dans la visionneuse Events pour l’ID global 4477. Une composante de la liste de vérification est intégrée à la vue Events. Ici, la colonne Queue ID située le plus à gauche affiche la même icône rouge que celle qui apparaît dans la vue Liste de vérification. Les éléments de la vue Events comportent aussi des liens. Lorsque vous sélectionnez une icône rouge dans la vue Events, l’élément apparaît dans la vue Liste de vérification.

Pourquoi les tentatives d’automatisation échouent

Pour bien faire les choses, nous avons besoin que vous compreniez ce qui n’a pas fonctionné lors des tentatives précédentes. La raison la plus évidente est les faux positifs. Si la liste de vérification vous indique que vous faites quelque chose de mal alors que ce n’est pas le cas, il s’agit d’un bogue qui doit être corrigé. Toutefois, certains problèmes subtils ne sont pas des faux positifs, mais y sont liés. Ce sont des cas de vrais positifs, où la liste de vérification a raison, il y a bien un échec, mais pour une raison ou une autre, vous ne pouvez pas ou ne voulez pas le corriger. Nous appelons ces problèmes des _Oui, mais_. Voici quelques exemples :
  • La liste de vérification indique Prefer GPU Optimal Memory for Graphics Resources. Oui, mais vous avez épuisé la mémoire GPU optimale et la liste de vérification PIX vous demande de corriger l’impossible.
  • La liste de vérification indique Avoid consecutive calls to ResourceBarrier. Oui, mais il n’y avait que quelques occurrences. La correction n’en vaut pas la peine, car elle ne vous fera rien gagner de substantiel.
  • La liste de vérification indique Use the 2nd hardware display plane. Oui, mais vous ne voulez pas créer des branches de code distinctes pour PC, XBOX One X et XBOX Series X|S.
Une façon de régler ce genre de problèmes est d’offrir un filtrage robuste. Vous ne les verrez pas s’ils ne sont pas nécessaires. Les échecs d’automatisation surviennent aussi en raison de la rétroaction et de l’itération. La survie de la fonctionnalité de liste de vérification n’est pas assurée. Il y a eu de bons résultats jusqu’à présent, mais des problèmes sans importance sont encore signalés en trop grand nombre.

Démo deux : Filtrer la vue Liste de vérification

Cette section décrit comment filtrer la vue Liste de vérification. Figure 6. Filtrage par statut réussite/échec dans la vue Liste de vérification de PIX. Filtrage par statut réussite/échec dans la vue Liste de vérification de PIX La figure 6 montre la liste de vérification filtrée selon le statut réussite/échec après la sélection du bouton vert Hide rules with no violations. Les règles sont classées selon leur gravité. L’ATG attribue à chaque règle un niveau de gravité de 1 à 4. Figure 7. Filtrage par gravité dans la vue Liste de vérification de PIX. Filtrage par gravité dans la vue Liste de vérification de PIX Si vous voulez voir uniquement les avertissements les plus graves, vous pouvez limiter la liste de vérification à la gravité 1 ou à la gravité 2. La figure 7 montre la liste de vérification filtrée sur les règles de gravité 1. Figure 8. Désactivation manuelle d’une règle dans la vue Liste de vérification de PIX. Désactivation manuelle d'une règle dans la vue Liste de vérification de PIX S’il y a une règle que vous ne voulez pas voir, cliquez avec le bouton droit sur la règle, puis sélectionnez Disable this rule. La figure 8 montre le filtrage de la liste de vérification par la désactivation d’une règle. Figure 9. Vue Liste de vérification de PIX non filtrée. Vue Liste de vérification de PIX non filtrée Vous pouvez aussi sélectionner Show disabled rules à gauche de l’icône verte Hide rules with no violations. Tout ce que vous avez désactivé auparavant est activé et visible. La figure 9 montre la liste de vérification non filtrée. Figure 10. Filtrage par texte dans la vue Liste de vérification de PIX. Filtrage par texte dans la vue Liste de vérification de PIX Si vous voulez trouver un avertissement et que vous connaissez une partie de son texte, tapez ce texte dans la zone de recherche de la liste de vérification. La liste de vérification affiche les règles dont le titre de l’avertissement ou la description longue correspond au texte. La figure 10 montre la liste de vérification filtrée par texte. Les exemples des sections suivantes présentent des avertissements que vous pourriez voir dans la liste de vérification. Ils se fondent sur un échantillon de huit titres. Ces titres ont déjà été lancés et sont optimisés. Il est beaucoup plus difficile d’y trouver des problèmes. La liste de vérification fonctionne mieux au début de la production, lorsqu’il reste encore des problèmes à trouver.

Démo trois : Décompression de profondeur inutile

Cette section décrit l’avertissement Use Texture Compatibility on Compressed Resources et utilise une décompression de profondeur inutile comme exemple. Figure 11. Vue Liste de vérification de PIX avec l’avertissement Use Texture Compatibility on Compressed Resources. Vue Liste de vérification de PIX avec l'avertissement Use Texture Compatibility on Compressed Resources Dans le premier exemple, la figure 11 affiche un avertissement Use Texture Compatibility on Compressed Resources. Notez que vous pouvez lire la description au bas de la fenêtre pour obtenir des détails supplémentaires sur l’avertissement. Sélectionnez le lien Global ID #337 pour poursuivre l’examen du problème. Figure 12. Vue Events de PIX avec décompression de profondeur. Vue Events de PIX avec décompression de profondeur La sélection du lien vous mène à la vue Events et à un appel ResourceBarrier, comme le montre la figure 12. Depth Decompress se trouve sous l’appel ResourceBarrier. Toutefois, sur XBOX Series X|S, il existe une fonctionnalité de compatibilité de texture qui vous permet d’éviter une opération Depth Decompress et de lire nativement le format compressé. Les décompressions de profondeur n’apparaissent habituellement pas à cet endroit. Vous ne vous attendez pas à voir une opération Depth Decompress. Et elle prend 0,116 milliseconde. La liste de vérification vous indique où une violation s’est produite. Figure 13. Vue API Objects de PIX et indicateur de compatibilité de texture. Vue API Objects de PIX et indicateur de compatibilité de texture En poussant l’examen plus loin, vous accédez à la vue API Objects et à l’objet illustré. La figure 13 confirme que l’objet #35073 a été créé en tant que tampon de profondeur et de stencil, mais qu’il ne spécifiait pas la compatibilité de texture. Cet avertissement est apparu dans les deux titres de l’échantillon. Pour l’un d’eux, c’était une bonne trouvaille. L’autre a répondu oui, mais : cela avait été essayé et ce n’était pas important. Il était donc raisonnable d’ignorer l’opération Depth Decompress, malgré la perte de performance ailleurs.

Démo quatre : Compression delta des couleurs (DCC)

Cette section décrit l’avertissement Use Delta Color Compression for Pre-cleared Color Textures. Figure 14. Compression delta des couleurs dans PIX. Compression delta des couleurs dans PIX La figure 14 montre l’avertissement Use Delta Color Compression for Pre-cleared Color Textures. La plupart des cibles de rendu sur XBOX Series X|S utilisent la DCC. Elle prend en charge la compatibilité de texture; cet avertissement est donc lié à l’exemple de la démo trois. La sélection du lien Global ID #1311 vous mène à un événement sélectionné. Figure 15. Avertissement Fast Clear Eliminate dans PIX. Avertissement Fast Clear Eliminate dans PIX La figure 15 montre un avertissement Fast Clear Eliminate après la sélection du lien dans la vue Liste de vérification. C’est inhabituel, car la DCC ne comporte pas d’opération Fast Clear Eliminate. Habituellement, vous ne vous attendriez pas à ce type d’avertissement dans une capture XBOX Series X|S. Fast Clear Eliminate est le type de compression utilisé sur XBOX One. Un avertissement déclenché sur Fast Clear Eliminate indique que la compression cmask a été utilisée au lieu de la DCC. Lorsque vous utilisez la DCC, vous verrez DCC Eliminate. Lorsque vous utilisez la DCC et la compatibilité de texture, vous ne verrez rien ici et vous économiserez le coût de l’opération DCC Eliminate. Figure 16. Tampon de vélocité dans PIX. Tampon de vélocité dans PIX La texture pourrait être une bonne candidate pour la DCC. La figure 16 montre la cible de rendu en tant que tampon de vélocité (Velocity Buffer), qui est souvent compressible. Dans ce cas, la cible de rendu est presque entièrement noire, et les parties restantes sont presque toutes de la même teinte de gris. Pour un titre, deux des développeurs ont dit que cet avertissement pourrait être une erreur. Au début du développement, ils avaient rencontré des bogues avec la DCC. Pour un autre titre, l’équipe a aussi désactivé la DCC dans certains cas en raison de bogues non résolus. D’autres titres ont également signalé l’avertissement Fast Clear Eliminate. Certains de ces cas ont représenté des gains, d’autres non. C’est peut-être un point que l’ATG doit examiner davantage, ou le problème a peut-être été corrigé depuis que les décisions ont été prises.

Démo cinq : Cible de rendu non liée

Cette section décrit l’avertissement Remove Unbound RTVs from Shader/PSO et une cible de rendu non liée. Figure 17. Cible de rendu non liée dans PIX. Cible de rendu non liée dans PIX La figure 17 montre l’avertissement Remove Unbound RTVs from Shader/PSO. La sélection du lien Global ID #4474 mène à l’événement lié qui a déclenché l’avertissement. Figure 18. Événement lié dans la vue Pipeline de PIX. Événement lié dans la vue Pipeline de PIX La figure 18 montre la vue Pipeline pour l’événement lié. Il y a deux cibles de rendu : RTV 0 et RTV 1. RTV 0 est en noir, ce qui indique que la vérification a réussi. Toutefois, RTV 1 est en rouge, ce qui indique qu’il y avait un problème. Figure 19. Ligne d’exportation vers mrt1 dans PIX. Ligne d'exportation vers mrt1 dans PIX La figure 19 montre, au bas de la fenêtre, la ligne de code qui exporte vers mrt1. La capture ne comportait pas de symboles; seules les instructions GPU sont donc disponibles pour le nuanceur de pixels (PS). En remontant le registre, vous pouvez voir comment l’exportation vers RTV 1 a été calculée. On s’attendait à ce que RTV 1 soit liée, mais ce n’était pas le cas. Figure 20. Coloration syntaxique dans PIX. Coloration syntaxique dans PIX Grâce à la coloration syntaxique de PIX, vous pouvez voir à quel point le calcul de cette exportation est coûteux dans la figure 20. Il y a deux problèmes dans ce scénario.
  • L’exportation de quelque chose qui n’est pas nécessaire et le coût de performance qui y est associé.
  • Le calcul servant à produire la valeur exportée est un coût gaspillé.
Les deux titres de l’échantillon présentaient un avertissement Remove Unbound RTVs from Shader/PSO. Un titre a jugé que la correction en valait la peine. L’autre a jugé que non. Le problème n’a pas été corrigé en raison d’une combinaison de deux facteurs.
  • Il ne se produisait que brièvement.
  • La correction exige un nouveau PS, ce qui ajoute de la mémoire et de la complexité.
Les deux réactions étaient raisonnables.

Démo six : Exportations VS inutilisées

Cette section décrit l’avertissement The VS Exports Only Parameters which are Needed by the PS. Figure 21. Avertissement d’exportations VS inutilisées dans PIX. Avertissement d'exportations VS inutilisées dans PIX La figure 21 montre l’avertissement The VS Exports Only Parameters which are Needed by the PS. Cet avertissement est complémentaire à l’avertissement Remove Unbound RTVs from Shader/PSO. Dans ce dernier, le PS exportait des choses qui n’étaient pas nécessaires. Dans l’avertissement The VS Exports Only Parameters which are Needed by the PS, le nuanceur de sommets (VS) exportait aussi des choses qui n’étaient pas nécessaires. L’occurrence sélectionnée dans la figure 22 indique que le VS a deux paramètres, mais que le PS n’en a importé aucun. Vous pouvez sélectionner le lien pour voir pourquoi le PS n’en a importé aucun. Figure 22. Appels de dessin dans la vue Pipeline de PIX. Appels de dessin dans la vue Pipeline de PIX La figure 22 montre les appels de dessin dans la vue Pipeline. La sélection du lien vous mène aux appels de dessin dans la vue Pipeline. Figure 23. Nuanceur de pixels non lié dans PIX. Nuanceur de pixels non lié dans PIX La figure 23 montre que le PS n’est pas lié et que cet événement porte uniquement sur la profondeur. Les dernières instructions du VS sont des exportations vers le paramètre 0 et le paramètre 1. Tout ce qu’écrit le VS, à l’exception de la position, est gaspillé, car aucun PS n’est là pour le récupérer. Si vous remontez ces exportations, vous verrez qu’elles reposent sur des calculs considérables. Elles n’exportent pas une constante. Ce scénario pose deux problèmes.
  • L’exportation de paramètres qui n’ont pas besoin d’être exportés occupe de l’espace dans le cache de paramètres.
  • Les paramètres exportés étaient le résultat d’un calcul potentiellement long qui est lui aussi gaspillé.
Dans un cas, l’équipe voulait corriger ce problème, car il s’agissait d’un rendu de profondeur uniquement. L’équipe a indiqué l’avoir corrigé sur PC, et cela a bien fonctionné pour elle. Elle veut l’essayer sur XBOX. Une autre équipe avait une occurrence différente où il n’y avait pas de rendu. Elle a jugé que la correction de ce problème n’en valait pas la peine. C’est raisonnable, car cela implique de créer des variantes du VS, d’avoir davantage d’instances du VS, avec les coûts qui y sont associés. D’autres titres reçoivent aussi cet avertissement, et les conséquences sur la performance varient.

Démo sept : Wave64 presque vide

Cette section décrit l’avertissement Use Wave32 for threadgroups of size 32 or less et une wave64 presque vide.
Cet avertissement a depuis été élargi pour couvrir davantage de cas, et son nom a changé en conséquence.
Figure 24. Wave64 presque vide dans PIX. Wave64 presque vide dans PIX La figure 24 montre l’avertissement Use Wave32 for threadgroups of size 32 or less. Figure 25. Dispatch à l’intérieur d’une passe dans PIX. Dispatch à l'intérieur d'une passe dans PIX La figure 25 montre que la sélection de l’une des occurrences dans la vue Liste de vérification vous mène à un dispatch à l’intérieur d’une passe. Toutefois, quelque chose d’étrange se produit. Selon les colonnes des compteurs, cette passe comporte 123 groupes de threads, 123 waves et 123 threads. Et tout ce qu’elle contient est un dispatch(1,1,1). Cette passe ne comporte que des dispatchs d’un seul groupe de threads, contenant une seule wave, contenant un seul thread. Tous les autres threads sont gaspillés. L’avertissement vous indique qu’au lieu de gaspiller 63 threads sur 64 dans une Wave64, vous pourriez vouloir n’en gaspiller que 31 sur 32. Bien que vous puissiez le faire, cela ne rendra pas la situation moins désastreuse qu’elle ne l’est déjà. L’avertissement reste utile, car il vous signale que vous faites quelque chose d’étrange.

Conclusion

La liste de vérification PIX est en développement actif

L’équipe PIX développe activement la liste de vérification PIX. Vos commentaires sont importants. L’équipe ATG utilise la liste de vérification PIX lors de ses revues de performance, en surveillant les faux positifs et en apprenant où se trouvent les points problématiques. L’équipe PIX continue de mettre à jour la liste de vérification et de proposer de nouveaux avertissements. Nous vous encourageons à continuer de l’utiliser.

Ce que nous vous demandons

Le développement de la liste de vérification PIX est influencé par vos commentaires.
  1. Exécutez la liste de vérification PIX sur vos captures.
  2. Envoyez-nous vos commentaires sur les fonctionnalités utiles comme sur celles qui ne le sont pas, au moyen du bouton de commentaires de PIX, des forums ou de vos contacts chez Microsoft. Les développeurs ont tendance à donner des commentaires surtout lorsque les choses vont mal. Les équipes PIX ont aussi besoin de commentaires sur ce qui fonctionne bien, afin de savoir sur quoi continuer à travailler.
  3. Demandez de nouveaux tests. Maintenant que vous avez vu quels types de tests sont possibles, envoyez vos idées de tests supplémentaires utiles.

Plans futurs

Voici quelques fonctionnalités que l’équipe PIX a envisagées pour l’avenir.
  • Seuils d’avertissement configurables par l’utilisateur : par exemple, un avertissement pourrait n’être utile que s’il compte 100 occurrences. Toutefois, un autre développeur pourrait avoir besoin d’un seuil d’avertissement de seulement cinq occurrences.
  • Étendre la vue Liste de vérification à d’autres types de captures : par exemple, un avertissement de System Monitor qui détecte lorsque vous êtes sous votre fréquence d’images cible pendant un certain nombre d’images. Cela créerait une capture GPU.
  • Vue Liste de vérification pour les captures de minutage (Timing Capture) : elle fournirait des avertissements indiquant les échecs dans une capture de minutage PIX.

Étapes suivantes

Pour consulter l’information tirée des documents de présentation liés à cette vue d’ensemble, téléchargez les fichiers suivants à partir de XBOX Developer Download Secure Data Storage (SDS).
  • Diaporama : GR01_A Tour of the New PIX Checklist - GPU Performance Made Easy.pptx dans Xfest 2022 Graphics Track PowerPoints (Xfest2022GfxPPTs.ZIP)
  • Présentation vidéo : GR01.mp4 dans Xfest 2022 Graphics Track Videos (Xfest2022GfxVids.ZIP)

Télécharger les présentations Microsoft PowerPoint et les vidéos

  1. Accédez à Téléchargements du Game Development Kit (GDK).
  2. Sous Select file type, sélectionnez Conference Materials, puis sélectionnez Confirm.
  3. Sous Select build/version number, choisissez l’une des présentations graphiques suivantes.
    • Xfest 2022 Graphics Track PowerPoints
    • Xfest 2022 Graphics Track Videos
  4. Sélectionnez Download Now, puis attendez la fin du téléchargement du fichier .zip.
  5. Accédez à votre dossier Téléchargements local, puis décompressez (extrayez) les fichiers du dossier compressé.

Voir aussi

PIX
Last modified on October 6, 2026