Vue d'ensemble de Graphics Diagnostics

Graphics Diagnostics peut vous aider à déboguer des erreurs de rendu dans les jeux et les applications DirectX.

Conditions requises pour Visual Studio 2013

Pour utiliser Graphics Diagnostics dans Visual Studio 2013, vous devez avoir l'une de ces éditions :

  • Visual Studio 2013 Ultimate

  • Visual Studio 2013 Premium

  • Visual Studio 2013 Professional

  • Visual Studio 2013 Express pour Windows

Notes

Visual Studio 2013 L'édition Express pour Windows Desktop ne prend pas en charge les fonctionnalités Graphics Diagnostics.

Configuration requise pour le système d'exploitation et le Kit de développement logiciel

Kit de développement logiciel Windows pour Windows 8.1 installe les composants d'exécution qui sont requis par Graphics Diagnostics et prend en charge le développement de Windows 8.1 et de Windows 8. Pour utiliser Graphics Diagnostics sur Windows 7 et Windows Vista, vous devez installer l'un des Kit de développement logiciel suivants :

  • Windows SDK (version 7.1)

  • Kit de développement logiciel DirectX (juin 2010)

Compatibilité des versions DirectX

Graphics Diagnostics prend en charge les applications qui utilisent Direct3D 10, Direct3D 10.1, Direct3D 11, Direct3D 11.1 et Direct3D 11.2, et 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.

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

Prise en charge de Windows 8 et Windows 7

Comme les versions précédentes de Windows ne prennent pas en charge DirectX 11.2, la capture robuste n'est pas disponible sur ces plateformes. À la place, les applications exécutées sous Windows 8 ou Windows 7 utilisent la méthode de capture précédente détournée appelée capture héritée. Sa prise en charge sous Windows 8.1 n'étant pas nécessaire, la capture héritée est déconseillée. Cependant, elle reste disponible pour prendre en charge les applications exécutées sous Windows 8 ou Windows 7.

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

Changements dans l'interface utilisateur de Visual Studio 2013 Update 3

Depuis Visual Studio 2013 Update 3, les fenêtres de l'outil Graphics Diagnostics sont hébergées dans une copie indépendante de l'IDE Visual Studio pour réduire le nombre de fenêtres d'outil dans l'espace limité de l'IDE Visual Studio principal. L'environnement personnalisé qui héberge maintenant les outils Graphics Diagnostics est appelé analyse graphique de Visual Studio. Il élimine les menus et les options inutiles. Toutefois, les outils Graphics Diagnostics et les flux de travail sont similaires à ceux de Graphics Diagnostics dans les versions antérieures de Visual Studio.

Il existe deux différences importantes :

  1. Quand vous exécutez votre application dans Graphics Diagnostics, Visual Studio n'affiche plus de version dynamique du document de journal Graphics. À la place, Visual Studio fournit une nouvelle interface de capture. La nouvelle interface de capture se présente ainsi :

    Outil Utilisation du GPU.

    À partir de cette interface, vous pouvez capturer un ou plusieurs frames dans le journal de graphisme, et afficher des graphiques en temps réel qui indiquent la fréquence d'images de votre application, ainsi que la durée en millisecondes du rendu de chaque frame.

  2. Vous ne pouvez pas apporter de changements au code dans l'environnement Analyse Graphics. Si vous ouvrez du code à changer dans l'environnement Analyse Graphics, il est ouvert dans l'IDE Visual Studio principal et reçoit le focus.

Cette interface est ce que vous voyez dans Visual Studio. Pour lancer l'analyse de graphiques de Visual Studio, choisissez l'un des frames en suivant le lien Frame... au-dessus de la miniature de l'image ou en double-cliquant sur la miniature.

Utilisation de Graphics Diagnostics pour déboguer les problèmes de rendu

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.

Voici certains genres de problèmes de rendu que Visual Studio peut vous aider à résoudre.

  • État du périphérique
    La configuration correcte du périphérique graphique est importante car elle détermine la façon dont la canalisation des graphiques interprète les données associées à chaque appel de dessin, et comment leurs résultats sont fusionnés. Par exemple, si l'état de périphérique spécifie l’ordre d’enroulement de sommets dans le sens horaire, alors tous les modèles qui spécifient des sommets dans un ordre inverse à celui des aiguilles d'une montre ne seront pas affichés correctement. Les problèmes d'état de périphérique peuvent être difficiles à diagnostiquer car la cause du problème dans le code source est souvent supprimée depuis longtemps des objets affectés. Graphics Diagnostics vous permet d'afficher l'état du périphérique à tout moment pendant le rendu.

  • Paramètres et mémoires tampons constantes non initialisés ou non valides
    Les applications graphiques utilisent des mémoires tampons constantes et des paramètres pour transmettre des informations supplémentaires à un appel de dessin ou à un ensemble d'appels de dessin. Par exemple, les données peuvent spécifier différents emplacements ou différentes apparences pour différents objets. Lorsque ces données ne sont pas initialisées ou contiennent des valeurs incorrectes, l'objet correspondant ne s'affiche pas correctement, ou pas du tout. Il peut être difficile de diagnostiquer ce type de problème car il n'est pas toujours facile de savoir s'il provient des données ou du code de nuanceur qui le consomme. Il peut également être difficile de déterminer quels nuanceurs, quelles mémoires tampons constantes et quels paramètres correspondent à l'erreur. Vous pouvez utiliser Graphics Diagnostics pour déterminer quels nuanceurs, quelles mémoires tampons constantes et quels paramètres s'appliquent à chaque appel de dessin et afficher son contenu.

  • Bogues du nuanceur
    Il est presque inévitable de faire une erreur dans le code d'application, que le code soit du code C++ ou High Level Shader Language (HLSL). Toutefois, le code HLSL de débogage était généralement plus difficile car il ne bénéficiait pas de la prise en charge du débogage enrichi que C++ et d'autres langages offrent. Graphics Diagnostics fournit à HLSL des outils de débogage de code classiques afin que vous puissiez parcourir le code, définir des points d'arrêt, et examiner le contenu des variables, des paramètres et des mémoires tampons constantes.

Fonctionnement de Graphics Diagnostics

Pour utiliser Graphics Diagnostics, vous devez commencer par enregistrer des informations sur la façon dont une application utilise l'API de Direct3D lorsqu'elle s'exécute, puis examiner ensuite le comportement enregistré. Pour les frames spécifiés, les informations qui sont enregistrées incluent les appels d'API (tels que celles qui effacent l'écran, dessinent une géométrie, distribuent des nuanceurs de calcul ou modifient l'état du périphérique graphique) avec leurs arguments, et copient des tampons et des objets référencés indirectement. En outre, les appels d'API liés à l'installation et à l'initialisation sont enregistrés avant que les frames soient affichés. Les informations enregistrées sont écrites dans un fichier du journal de graphisme (.vsglog).

Vous devez recréer le comportement de rendu qui est enregistré dans le journal de graphisme en lisant les événements de graphisme sur votre ordinateur de développement, ou sur un ordinateur distant ou un périphérique. L'ordinateur de lecture peut être le même ordinateur ou le même périphérique que celui où le journal de graphisme a été initialement capturé ou un autre. Pour la plupart des fonctionnalités de lecture, le matériel graphique de l'ordinateur de lecture est utilisé pour lire les événements de graphiques, mais lorsque le débogueur HLSL est utilisé, le code de nuanceur est toujours lu à l'aide d'un GPU émulé sur l'UC. L'utilisation d'un GPU émulé permet de parcourir le code de nuanceur, d'inspecter des variables, et d'utiliser d'autres fonctionnalités de débogage courantes que le matériel graphique de l'ordinateur de lecture prenne en charge le débogage du matériel ou non.

Notes

Bien qu'un journal de graphisme capture la plupart des informations pertinentes en interne, des informations supplémentaires sont requises pour utiliser pleinement certaines fonctionnalités de Graphics Diagnostics.Par exemple, pour utiliser pleinement la fonctionnalité de pile des appels de graphiques, vous devez également disposer du fichier de base de données du programme (.pdb) et du code source de l'application.Pour déboguer le code source du nuanceur HLSL, vous devez également avoir le code source du nuanceur.(Si le nuanceur est compilé à l'aide du compilateur de nuanceur D3D11.1, alors que les informations de débogage sont activées, le code source du nuanceur est incorporé dans le journal de graphisme pendant la capture.)

Notes

Compte tenu de la possible indisponibilité de certaines API dans les versions précédentes de Windows ou DirectX, vous ne pouvez pas lire les journaux de graphisme qui ont capturé ces appels d'API sur un ordinateur de lecture qui ne les prend pas en charge.

Journaux de graphisme

Un journal de graphisme contient un ou plusieurs frames qui ont été capturés à partir d'une application graphique DirectX en cours d'exécution. Comme un journal de graphisme est autonome, ces frames peuvent être recréés ultérieurement, sans informations externes ni références. Cela signifie que vous pouvez partager des journaux de graphisme avec d'autres développeurs, examiner les problèmes sur des ordinateurs différents, et consulter les journaux de graphisme anciens même si les schémas et les textures ont été modifiés dans le développement. Vous pouvez aussi charger plusieurs fichiers du journal de graphisme (.vsglog) en même temps pour comparer les données et les résultats de rendu.

Pour ouvrir un fichier journal de graphisme (vsglog)

  1. Dans Visual Studio, dans la barre de menus, choisissez Fichier, Ouvrir, Fichier. La boîte de dialogue Ouvrir un fichier s'affiche.

  2. Spécifiez un fichier journal de graphisme (.vsglog) à ouvrir, puis choisissez le bouton Ouvrir.

Notes

Vous pouvez extraire, modifier, puis enregistrer des copies des maillages et des textures d'un journal de graphisme à l'aide des outils graphiques qui font partie de Visual Studio.Toutefois, le contenu du journal de graphisme n'est pas affecté par ces modifications.Pour plus d'informations sur ces outils graphiques, consultez Utilisation de ressources 3D pour les jeux et les applications.

La barre d'outils Graphics

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

Barre d'outils Graphics en mode de diagnostics des graphiques

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é, vous pouvez utiliser les autres outils pour afficher les fenêtres d'un autre outil. Pour plus d'informations sur l'exécution de l'application dans Graphics Diagnostics et sur la capture d'informations de graphiques, consultez Capture d'informations Graphics.

Fenêtres Outil Graphics Diagnostics

L'illustration suivante montre une disposition typique des fenêtres Outil utilisées pour tester et déboguer les frames capturés. Chaque fenêtre expose une catégorie d'informations différente à propos du frame capturé en cours d'examen, et même pour chaque pixel du frame.

Toutes les fenêtres du débogueur de graphiques

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

Voir aussi

Concepts

HLSL, débogueur