Anforderungen für die Zielanwendung für den Grafik-Debugger von Visual Studio 11

8

Ich war sehr glücklich, als das "Graphics Debugger" -Feature für Visual Studio 11 angekündigt wurde. Ich habe sofort versucht, es für verschiedene Projekte zu verwenden, die ich hatte, leider habe ich es nur für Windows 8 Metro-Anwendungen geschafft! Insbesondere die C ++ - Metro-Projektvorlagen führen alle erwarteten Informationen korrekt aus und erfassen sie.

Mit Developer Preview-Versionen von Visual Studio und Windows 7 stürzt jeder Versuch, Anwendungen unter dem Grafikdebugger (Alt-F5) zu starten, bei D3D11CreateDeviceAndSwapChain () ab, auch wenn sie einwandfrei funktionieren. Auf meiner Visual Studio 11 Beta auf Windows 8 Consumer Preview-Maschine bei der Arbeit, bekomme ich ein bisschen weiter, die Graphics Debugger HUD wird korrekt angezeigt, aber jeder Versuch, eine Aufnahme zu erhalten (Druck-Bildschirm in der App oder der Symbolleisten-Schaltfläche) führt einfach dazu eine Nachricht (im Ausgabeprotokoll und eine gelbe Leiste oben im geöffneten .vsglog):

  

Das Grafik-Diagnose-Modul konnte die Ergebnisse nicht liefern, wahrscheinlich weil das vsglog DirectX-Aufrufe auf diesem Rechner nicht unterstützt.

Dies ist sogar der Fall bei der direkten Portierung der Direct3D-Aufrufe aus den Metro-Vorlagen-Anwendungen! Ich sehe keine Nachrichten aus der MSDN-Dokumentation, dass diese Funktion nur für Metro gedacht ist, also erwarte ich, dass ich einfach etwas Dummes mache, aber die Anwendungen funktionieren korrekt, wenn sie nicht unter dem Grafikdebugger sind.

Weitere Informationen: D3D11_CREATE_DEVICE_DEBUG ist gesetzt, das DirectX-Kontrollfeld aktiviert das Direct3D-Debugging, und ich erwarte, dass Informationsnachrichten erzeugt und vernichtet werden und keine anderen in Ausgabe.

    
Simon Buchan 14.03.2012, 05:14
quelle

2 Antworten

9

Windows 8 : A-ha! Durch das Anhängen eines anderen Debuggers an den Grafik-Debugger-Host VsGraphicsDesktopEngine.exe (gefunden in C: \ Programme (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ Extensions \ Microsoft \ VsGraphics \ x86) und das Direct3D-Debugging über die DirectX-Systemsteuerung erzwingen Ich habe die Ausgabe:

  

DXGI-FEHLER: Kein Zielfenster in DXGI_SWAP_CHAIN_DESC angegeben und kein Fenster, das mit dem Besitz von Factory assoziiert ist. [UNBEKANNTER FEHLER # 7:]

     

PIX: IDXGIFactory2 :: CreateSwapChainForHwnd gab 887a0001

zurück

Ich fand das ziemlich seltsam, denn obwohl ich CreateSwapChainForHwnd () verwende, verwendet es DXGI_SWAP_CHAIN_DESC 1 , was nicht einmal das Feld OutputWindow hat. . Jedoch habe ich versucht, meine Verwendung von CreateSwapChainForHwnd () mit CreateSwapChain () mit dem angegebenen OutputWindow zu tauschen und alles funktioniert !

Bei weiteren Tests habe ich festgestellt, dass jeder Versuch von D3D11CreateDeviceAndSwapChain () fehlschlägt, mit einem Null-Adapter, der ausgeführt wird, aber Captures geben die bizzare "Dieses Grafikdiagnose-Modul unterstützt D3D9 nicht. Die Wiedergabe Ihrer Anwendung ist möglicherweise unvollständig." und mit einem bestimmten Adapter stürzt es mit diesem Stack ab:

%Vor%

Es scheint nur D3D11CreateDevice () gefolgt von IDXGIFactory :: CreateSwapChain () zu funktionieren - entweder durch Angabe eines Adapters oder später durch Abfrage des Geräts für die Fabrik.

Windows 7 hat noch ein weiteres Problem: Sie müssen D3D11CreateDevice() / IDXGIFactory::CreateSwapChain() immer noch verwenden, aber es wird auch ein DirectX-Debug-Layer-Fehler beim ersten Present() ausgelöst, wenn Sie ein DXGI verwenden 1.0 factory ( CreateDXGIFactory() vs. CreateDXGIFactory 1 () ):

  

D3D11: FEHLER: ID3D11Device :: CreateTexture2D: D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX ist nur für Geräte verfügbar, die außerhalb von Dxgi1.1-Fabriken oder später erstellt wurden. [STATE_CREATION ERROR # 103: CREATETEXTURE2D_INVALIDMISCFLAGS]

Wenn Sie die Debug-Ebene aktiviert haben (was Sie im Allgemeinen tun sollten), löst dies eine Ausnahme im Debugger aus, wodurch es wie ein weiterer Absturz aussieht, aber es ist sicher fortsetzbar - wie auch immer Sie es tun Erhalten Sie nicht die VS Graphics Debugger HUD, und das Objekttabellenfenster hat Inhalt unterbrochen. Auf der anderen Seite, wenn Sie seinem Rat folgen und eine DXGI 1.1-Fabrik verwenden, erhalten Sie einen echten Absturz in Present ().

Zusammenfassend scheint der Grafik-Debugger noch nicht ganz fertig gebacken zu sein!

Props zu @MrGomez für die Idee, den Debugger zu debuggen

    
Simon Buchan 21.03.2012, 02:31
quelle
3

Basierend auf den von Ihnen bereitgestellten Informationen stürzt das Tool in D3D11CreateDeviceAndSwapChain , da die Abstraktionsschicht beim Rendern die erforderlichen Direct3D-Erweiterungen nicht erfüllen kann. Dies wird durch die von Ihnen genannte Fehlermeldung bestätigt, sofern die Direct3D-Aufrufe, die angefordert werden, von Ihrem aktuellen Computer nicht unterstützt werden.

MSDN bietet einen Hilfeartikel zu diesem Szenario, der Sie mit den Standardwerkzeugen unterstützt debuggen Sie diesen Prozess. Insbesondere, während Sie es wahrscheinlich bereits in Betracht gezogen haben, kann dxdiag Ihnen beim Debuggen der aktuell ausgeführten Erweiterungen auf Ihrem System für Windows 7 oder Windows 8 Consumer Preview behilflich sein. Sie sollten auch einen Absturzspeicherauszug bei Visual speichern können Studio 11 stürzt ab, um später zu debuggen, was aufzeigen sollte, welcher Prozessaufruf fehlgeschlagen ist.

Bitte tun Sie dies und, wenn möglich, aktualisieren Sie diese Frage mit den Ergebnissen. Das sollte den API-Aufruf beleuchten, den Ihr System benötigt, damit wir dieses Problem lösen können.

    
MrGomez 18.03.2012 23:11
quelle