Windows Dev Center

Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Informations
Le sujet que vous avez demandé est indiqué ci-dessous. Toutefois, ce sujet ne figure pas dans la bibliothèque.

Vue d'ensemble de Visual Studio Graphics Diagnostics

Visual Studio Graphics Diagnostics est un ensemble d'outils pour l'enregistrement, puis l'analyse des problèmes de rendu et de performances des applications Direct3D. Graphics Diagnostics peut être utilisé sur les applications qui s'exécutent localement sur votre PC Windows, dans un émulateur d'appareil Windows, ou sur un PC ou un appareil distant.

Le débogage des problèmes de rendu dans une application riche en graphiques n'est pas aussi simple que de démarrer dans un débogueur et d'exécuter du code pas-à-pas. Dans chaque frame, des centaines de milliers de pixels uniques sont produits (chacun dépend d'un jeu complexe d'état, de données, de paramètres, et de code), il est possible que seuls quelques pixels présentent le problème que vous essayez de diagnostiquer. Pour compliquer encore plus les choses, le code qui génère chaque pixel est exécuté sur du matériel spécialisé qui traite des centaines de pixels en parallèle. Les outils et les techniques de débogage classiques (qui sont difficiles à exploiter même dans du code de thread léger) sont inefficaces face à autant de données.

Les outils Graphics Diagnostics de Visual Studio sont conçus pour vous aider à identifier les problèmes de rendu en commençant par les artefacts visuels qui indiquent le problème, puis en remontant à la source du problème en se concentrant uniquement sur le code de nuanceur associé, les étapes de canalisation, les appels de dessin, les ressources et l'état du périphérique dans le code source de l'application.

Graphics Diagnostics prend en charge les applications qui utilisent Direct3D 12, Direct3D 11 et Direct3D 10. Par ailleurs, il fournit une prise en charge limitée des applications qui utilisent Direct2D. Il ne prend pas en charge les applications qui utilisent des versions antérieures de Direct3D, DirectDraw ou d'autres API graphiques.

Hh873207.collapse_all(fr-fr,VS.140).gifWindows 10 et Direct3D 12

Windows 10 intègre la prochaine version de Direct3D, Direct3D 12, qui diffère sensiblement de Direct3D 10 et Direct3D 11. Ces différences permettent à DirectX d'être en phase avec le matériel graphique moderne et d'exploiter tout son potentiel. En outre, elles apportent également d'importants changements en matière d'API et octroient une plus grande responsabilité au programmeur qui doit gérer les problèmes de contention et de durée de vie des ressources. Il est crucial de pouvoir doter les programmeurs d'outils de débogage sophistiqués pour leur permettre d'effectuer cette transition. Ainsi, dans Visual Studio 2015, Graphics Diagnostics prend directement en charge Direct3D 12. Malgré les différences, Graphics Diagnostics avec Direct3D 12 assure la parité des fonctionnalités par rapport à Graphics Diagnostics et Direct3D 11.2, à l'exception pour l'instant de la fonctionnalité d'analyse des frames. Bientôt, la prise en charge de l'analyse des frames dans Direct3D 12 sera ajoutée, ainsi que de nouveaux outils de diagnostic qui vous aideront à résoudre de nouveaux genres de bogues dans Direct3D 12.

Windows 10 assure également la prise en charge des versions précédentes de Direct3D, ainsi que des jeux et applications qui reposent sur ces dernières. Graphics Diagnostics dans Visual Studio 2015 continue à prendre en charge Direct3D 10 et Direct3D 11 sur Windows 10, ainsi que sur Windows 8.1.

Hh873207.collapse_all(fr-fr,VS.140).gifWindows 8.1 et Direct3D 11.2

Dans Windows 8.1, DirectX 11.2 inaugure de nouvelles fonctionnalités qui prennent en charge la capture d'informations graphiques pendant toute son exécution. Windows 8.1 utilise la nouvelle capture basée sur l'exécution (appelée capture robuste) uniquement pour les versions de DirectX prises en charge par Windows 8.1. La capture robuste prend aussi en charge les nouvelles fonctionnalités de Direct3D 11.2.

Hh873207.collapse_all(fr-fr,VS.140).gifPrise en charge limitée de Direct2D

Étant donné que Direct2D est une API en mode utilisateur générée d'après Direct3D, vous pouvez utiliser Graphics Diagnostics pour déboguer les problèmes de rendu dans les applications qui utilisent Direct2D. Toutefois, étant donné que seuls les événements de Direct3D sous-jacents sont stockés à la place des événements de niveau supérieur de Direct2D, les événements de Direct2D n'apparaîtront pas dans la liste des événements graphiques. En outre, comme les relations entre les événements de Direct2D et les événements de Direct3D qui en résultent ne sont pas toujours claires, le fait d'utiliser Graphics Diagnostics pour déboguer les problèmes de rendu dans des applications qui utilisent Direct2D n'est pas simple. Vous pouvez toujours utiliser Graphics Diagnostics pour obtenir des informations sur les problèmes de bas niveau de rendu dans les applications qui utilisent Direct2D.

Graphics Diagnostics possède une interface dédiée, la fenêtre Graphics Analyzer, pour diagnostiquer les problèmes de rendu. Toutefois, il ajoute également certains outils à l'interface de Visual Studio.

Hh873207.collapse_all(fr-fr,VS.140).gifBarre d'outils Graphics (Visual Studio)

La barre d'outils Graphics fournit un accès rapide aux commandes Graphics Diagnostics.

Le bouton Démarrer les diagnostics exécute l'application dans Graphics Diagnostics. Quand une application s'exécute dans Graphics Diagnostics, le bouton Capturer le frame rendu suivant est activé.

Hh873207.collapse_all(fr-fr,VS.140).gifInterface de capture de Diagnostics

Quand vous exécutez votre application dans Graphics Diagnostics, Visual Studio affiche une interface de session de diagnostic que vous pouvez utiliser pour capturer des frames, et qui affiche également la charge actuelle de l'UC et du GPU. La charge de l'UC et du GPU s'affiche pour vous aider à identifier les frames que vous souhaitez peut-être capturer en raison de leurs caractéristiques de performances, plutôt que les erreurs de rendu.

Toutefois, ce n'est pas le seul moyen de capturer des frames. Vous pouvez également capturer des frames à l'aide de l'interface de capture par programmation, ou à l'aide du programme de capture en ligne de commande, dxcap.exe.

Pour plus d'informations, voir Capture d'informations Graphics.

Hh873207.collapse_all(fr-fr,VS.140).gifUtilisation du GPU

Graphics Diagnostics peut également profiler les performances de votre application Direct3D. Comme le profilage des données est altéré par l'enregistrement des détails relatifs aux événements graphiques, cette opération est distincte de la capture de frame à examiner à l'aide de Graphics Analyzer.

Pour plus d'informations, voir Utilisation du GPU.

Hh873207.collapse_all(fr-fr,VS.140).gifPanneau de configuration DirectX

Le panneau de configuration DirectX est un composant DirectX que vous pouvez utiliser pour modifier la manière dont DirectX se comporte (par exemple, vous pouvez activer la version de débogage des composants d'exécution DirectX, sélectionner le type de messages de débogage qui sont stockés, et désactiver certaines fonctionnalités du matériel graphique utilisées pour émuler le matériel ayant des capacités moindres). Ce niveau de contrôle sur DirectX peut vous aider à déboguer et à tester votre application DirectX. Vous pouvez accéder au panneau de configuration DirectX à partir de Visual Studio.

Pour ouvrir le panneau de configuration DirectX

  • Dans la barre de menus, choisissez Déboguer, Graphiques, Panneau de configuration DirectX.

Visual Studio Graphics Analyzer est une interface dédiée pour l'examen des problèmes de rendu et de performances dans les frames que vous avez capturés. Dans Graphics Analyzer, vous trouverez plusieurs outils qui vous aideront à explorer et comprendre le comportement de rendu de votre application. Chaque outil expose des informations d'un genre distinct concernant le frame inspecté. Par ailleurs, les outils sont conçus pour être utilisés conjointement afin d'identifier intuitivement la source d'un problème de rendu, à partir du moment où il est apparu dans le tampon de trame.

Cette illustration montre une disposition typique des outils dans Graphics Analyzer.

Toutes les fenêtres du débogueur de graphiques

Hh873207.collapse_all(fr-fr,VS.140).gifBarre d'outils Graphics (Graphics Analyzer)

La barre d'outils Graphics fournit un accès rapide aux fenêtres d'outils Graphics Analyzer.

Barre d'outils Graphics en mode de diagnostics des graphiques

Hh873207.collapse_all(fr-fr,VS.140).gifDocument journal de graphisme

Dans Graphics Analyzer, le document journal de graphisme est la fenêtre d'outil la plus importante. Cette fenêtre représente tous les frames capturés durant l'exécution de votre application dans Graphics Diagnostics. À ce stade, vous pouvez sélectionner un autre frame pour examiner ou choisir un pixel spécifique à analyser avec l'outil Historique des pixels. L'image de tampon de trame affichée dans ce document change pour refléter l'événement actuellement sélectionné, ce qui vous permet de voir la façon dont le tampon de trame est affecté au fil du temps.

Le Document de journal Graphics est également le point d'entrée de l'outil Analyse des frames. Celui-ci vous aide à comprendre les performances d'un frame en changeant la façon dont certains aspects du rendu sont configurés et en fournissant des résultats de benchmark à comparer à l'original.

Hh873207.collapse_all(fr-fr,VS.140).gifListe des événements

Les événements graphiques marquent chaque appel d'API Direct3D et chaque événement défini par l'utilisateur.

La Liste des événements Graphics montre tous les événements graphiques enregistrés durant le frame que vous examinez. Pour identifier plus facilement ce qui est important, vous pouvez visualiser la liste des événements hiérarchiquement, en fonction des dernières modifications d'état relatives à l'appel de dessin, ou sous forme de chronologie. En outre, les événements sont des événements à code de couleurs selon la file d'attente à laquelle ils appartiennent. Vous pouvez filtrer la liste pour inclure uniquement les événements qui vous intéressent.

Quand vous sélectionnez un événement dans la liste, le reste des outils Graphics Analysis reflètent l'état du frame au moment de l'événement. De cette façon, vous pouvez voir l'effet d'un événement sur le GPU. Par exemple, vous pouvez voir l'effet immédiat d'un appel de dessin sur le tampon de trame, même s'il est masqué par d'autres appels de dessin. Certains événements ont également des liens hypertexte que vous pouvez suivre pour plus d'informations sur leurs paramètres ou les objets de ressource associés.

Hh873207.collapse_all(fr-fr,VS.140).gifÉtapes de canalisation

Chaque appel de dessin dans votre application passe par la canalisation graphique fournie par Direct3D. À chaque étape de canalisation, la sortie de l'étape précédente est transformée par un petit programme appelé nuanceur. Elle est ensuite transmise à l'étape suivante, jusqu'à son rendu final à l'écran. De nombreuses erreurs de rendu se produisent à la frontière entre les étapes de canalisation quand le format de sortie est différent de ce qui est attendu à l'étape suivante, ou quand une étape produit simplement des résultats incorrects. Normalement, vous obtenez uniquement le résultat final visible sur votre écran. Vous ne pouvez pas distinguer facilement où l'erreur est survenue durant la canalisation.

La fenêtre Étapes de canalisation Graphics permet de visualiser le résultat de chaque étape indépendamment. Ainsi, vous pouvez identifier facilement l'étape à laquelle un problème de rendu est apparu pour la première fois. Une fois que vous avez identifié l'étape, vous pouvez démarrer le débogage de son nuanceur directement à partir de la fenêtre Étapes de canalisation.

Hh873207.collapse_all(fr-fr,VS.140).gifÉtat graphique

Les opérations de rendu dépendent beaucoup de l'état de plusieurs objets. Des problèmes de rendu de toutes sortes sont provoqués par un état mal configuré.

La fenêtre État graphique collecte les informations d'état relatives à chaque appel de dessin au même emplacement pour en faciliter la localisation. En outre, elle met en surbrillance les modifications d'état qui se sont produites depuis l'appel de dessin précédent.

Hh873207.collapse_all(fr-fr,VS.140).gifHistorique des pixels

Dans les scènes complexes, il n'est pas rare qu'un pixel soit ombré plusieurs fois dans un seul frame. La couleur précédente est parfois simplement remplacée, mais il arrive également que les couleurs soient combinées pour obtenir des effets tels que la transparence. Quand le résultat de la combinaison n'a pas l'apparence souhaitée, vous ne pouvez pas déterminer facilement si cela est dû au fait qu'une des couleurs est incorrecte, ou s'il s'agit d'un problème de combinaison. Parfois, un objet peut être absent, car sa contribution au pixel a été rejetée pour une raison quelconque.

La fenêtre Historique des pixels Graphics affiche l'historique complet du nuanceur de chaque pixel de l'image, y compris les contributions rejetées. Pour les contributions qui n'ont pas été rejetées, elle affiche les résultats bruts du nuanceur et montre comment chaque nouvelle couleur a été combinée à la précédente. Avec ces informations, il est beaucoup plus facile de localiser la source des erreurs dans les pixels qui fusionnent les résultats du nuanceur, ou quand un objet rendu est manquant, car sa contribution au pixel a été rejetée de façon incorrecte.

Hh873207.collapse_all(fr-fr,VS.140).gifPile des appels des événements

Le code du nuanceur n'est pas la seule source des problèmes de rendu dans une application Direct3D. Parfois, le code source de votre application passe un paramètre incorrect ou ne configure pas correctement Direct3D. Il existe un type d'erreur que la fonctionnalité décrite précédemment, Historique des pixels, peut vous aider à identifier. Il s'agit de l'erreur liée à l'absence d'un objet rendu, en raison du rejet de tous ses pixels. Ce genre d'erreur se produit généralement quand vous avez configuré un paramètre de manière incorrecte, par exemple le paramètre qui contrôle la façon dont le test de profondeur est effectué. En principe, vous trouverez votre erreur quelque part dans la pile des appels de l'appel de dessin de l'objet manquant.

La fenêtre Pile des appels des événements Graphics affiche la pile des appels complète de chaque événement graphique de la liste des événements. Elle vous permet même d'accéder directement au code source de votre application, si des informations de débogage sont disponibles. Il s'agit d'un outil puissant qui vous permet de suivre une erreur depuis sa première apparition, dans le GPU, jusqu'à son origine dans le code source de votre application.

Hh873207.collapse_all(fr-fr,VS.140).gifTable des objets

Chaque frame rendu par votre application s'appuie probablement sur des centaines, voire des milliers d'objets de ressource. Cela peut inclure les mémoires tampons d'arrière-plan, les cibles de rendu, les textures, les mémoires tampons de vertex, les mémoires tampons d'index, les mémoires tampons générales, quasiment tout ce dont Direct3D se souvient en tant qu'objet.

La Table des objets Graphics affiche tous les objets qui existent en même temps que l'événement graphique sélectionné dans la liste des événements. Dans la mesure où la plupart des objets d'une application classique sont des textures, la liste des événements est optimisée pour montrer rapidement les détails pertinents relatifs aux images. La colonne Type vous indique le type d'objet présent dans chaque ligne, alors que la colonne Format indique le sous-type ou la version de l'objet. D'autres informations sont également affichées. Certains objets possèdent également des liens hypertexte que vous pouvez suivre pour afficher l'objet avec une visionneuse plus spécialisée. C'est le cas, par exemple, pour les textures (vous pouvez afficher la texture en tant qu'image) ou les mémoires tampons (vous pouvez choisir la façon dont la visionneuse de mémoire tampon analyse et affiche les octets bruts de mémoire tampon en définissant le format de la mémoire tampon).

Hh873207.collapse_all(fr-fr,VS.140).gifAnalyse des frames

Les graphiques de votre application ne doivent pas seulement être corrects, ils doivent également être rapides. Cela doit aussi se vérifier sur les appareils moins puissants, tels que les ordinateurs portables avec des cartes graphiques intégrées ou les téléphones mobiles. Enfin, les graphiques doivent être esthétiquement parfaits.

L'outil Analyse des frames graphiques explore les optimisations de performances potentielles en changeant automatiquement la manière dont l'application utilise Direct3D, et en fournissant des résultats de benchmark à des fins de comparaison. Par exemple, l'analyse des frames peut activer le mappage MIP (ou MIP mapping) sur chaque texture, ce qui permet de révéler les textures susceptibles de tirer parti du mappage MIP mais pour lesquelles il n'est pas actuellement activé. Sur le matériel compatible, l'analyse des frames présente également des informations collectées à partir des compteurs de performances du GPU. Ce genre d'informations permet d'identifier les problèmes de performances au niveau du matériel, par exemple un nombre élevé de blocages d'extraction de texture ou de pertes dans le cache.

Toutefois, l'analyse des frames ne se réduit pas à une question de vitesse. Elle vise à atteindre les meilleures performances possibles avec un minimum de concessions sur la qualité visuelle. Parfois, un effet impressionnant sur un affichage de grande taille n'a pas le même impact sur le petit écran d'un téléphone, où un effet plus simple peut s'avérer tout aussi réussi sans épuiser la batterie. Les modifications automatiques et les benchmarks fournis par Graphics Analysis peuvent vous aider à trouver l'équilibre approprié pour votre application sur toute une gamme d'appareils.

Afficher:
© 2015 Microsoft