Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Graphics Debugging Michał Drobot Technical Art Director Reality Pump.

Podobne prezentacje


Prezentacja na temat: "Graphics Debugging Michał Drobot Technical Art Director Reality Pump."— Zapis prezentacji:

1 Graphics Debugging Michał Drobot Technical Art Director Reality Pump

2 Direct 3DDirect 3D D3D9, D3DXD3D9, D3DX PiXPiX AnalizaAnaliza Plan wykładu

3 DirectX SDKDirectX SDK Zestaw narzędzi oraz dokumentacji deweloperskiejZestaw narzędzi oraz dokumentacji deweloperskiej PiX – Performance Investigator for DirectXPiX – Performance Investigator for DirectX DirectX jest API graficznymDirectX jest API graficznym Znajduje się między aplikacją a jądrem drivera karty graficznejZnajduje się między aplikacją a jądrem drivera karty graficznej Jądro drivera tłumaczy zapytania API na język zrozumiały dla karty graficznej (maszynowy)Jądro drivera tłumaczy zapytania API na język zrozumiały dla karty graficznej (maszynowy) Po drodze wprowadza własną interpretację i optymalizacjęPo drodze wprowadza własną interpretację i optymalizację DirectX 9

4 C++ Aplikacja natywna D3D9 Runtime Kernel Drivera Karta graficzna

5 XNAXNA Stanowi wrapper D3D9 działający w trybie managedStanowi wrapper D3D9 działający w trybie managed Aplikacje nie mogą się bezpośrednio odwołać do bibliotek D3D9Aplikacje nie mogą się bezpośrednio odwołać do bibliotek D3D9 Muszą korzystać ze specjalnych obiektów komunikacyjnychMuszą korzystać ze specjalnych obiektów komunikacyjnych Obiekty są inteligentne często ukrywają przed programistą to co się rzeczywiście dzieje po stronie D3D9Obiekty są inteligentne często ukrywają przed programistą to co się rzeczywiście dzieje po stronie D3D9 Podejście w trybie managed umożliwia połączenie łatwości zarządzania obiektami wraz z szybkimi odwołaniami do API graficznegoPodejście w trybie managed umożliwia połączenie łatwości zarządzania obiektami wraz z szybkimi odwołaniami do API graficznego Kosztem jest nieznacznie zmniejszona wydajność oraz pewne ograniczenia funkcjonalnościKosztem jest nieznacznie zmniejszona wydajność oraz pewne ograniczenia funkcjonalności Zwiększona produktywnośćZwiększona produktywność DirectX 9

6 Aplikacja XNA D3D9 Runtime Kernel Drivera Karta graficzna XNA framework assembly

7 D3D9 APID3D9 API Zorganizowane w kolekcje wiele klas którymi zarządza aplikacjaZorganizowane w kolekcje wiele klas którymi zarządza aplikacja Klasy w większości bezpośrednio mapują się na klasy XNA frameworkKlasy w większości bezpośrednio mapują się na klasy XNA framework Obsługa natywnych obiektów D3D9 wymaga wielu operacji nie współgrających z ideologia kodu managed (lockowanie zasobów, stałe miejsca mapowane w pamięci, zrzucanie pamięci itp.)Obsługa natywnych obiektów D3D9 wymaga wielu operacji nie współgrających z ideologia kodu managed (lockowanie zasobów, stałe miejsca mapowane w pamięci, zrzucanie pamięci itp.) Wiele operacji jest obsługiwanych automatycznie przez obiekt wrapującyWiele operacji jest obsługiwanych automatycznie przez obiekt wrapujący PrzykładPrzykład VertexBuffer objectVertexBuffer object Podczas wywołania D3D9 tworzy IDirect3DVertexBuffer9Podczas wywołania D3D9 tworzy IDirect3DVertexBuffer9 Operacje dokonywane na VB są przesyłane do natywnego ID3DVB9Operacje dokonywane na VB są przesyłane do natywnego ID3DVB9 Obsługa lockowania niewidzialnaObsługa lockowania niewidzialna DirectX 9

8 Aplikacja XNA VertexBuffer IDirect3DVertexBuffer SetData<T>() Lock() Wypełnia tablicę danymi Unlock()

9 VertexBufferVertexBuffer Lockuje blok pamięciLockuje blok pamięci Znajduje wskaźnikZnajduje wskaźnik Wypełnia goWypełnia go Unlockuje blok pamięciUnlockuje blok pamięci Działa jako proxyDziała jako proxy DirectX 9

10 Możliwości debuggowania sprzętu graficznego występują na poziomie sterownika oraz APIMożliwości debuggowania sprzętu graficznego występują na poziomie sterownika oraz API Debuggowanie na poziomie sterownika jest skomplikowaneDebuggowanie na poziomie sterownika jest skomplikowane Poziom API odpowiada D3D9 runtimePoziom API odpowiada D3D9 runtime Wszelkiego rodzaju podgląd będzie dotyczyć struktur i sposobu zarządzania reprezentowanego przez D3D9, mimo że wywołania są z poziomu XNA FrameworkWszelkiego rodzaju podgląd będzie dotyczyć struktur i sposobu zarządzania reprezentowanego przez D3D9, mimo że wywołania są z poziomu XNA Framework DirectX 9

11 Textures, Surfaces, Render TargetsTextures, Surfaces, Render Targets D3D9 jako podstawową reprezentację obiektów tablicowych posiada powierzchnie – IDirect3DSurfaceD3D9 jako podstawową reprezentację obiektów tablicowych posiada powierzchnie – IDirect3DSurface Textury sa reprezentowane jako kolekcje Surface – IDirect3DTextureTextury sa reprezentowane jako kolekcje Surface – IDirect3DTexture Dla textury o wymiarach 8x8 – 4 obiekty SurfaceDla textury o wymiarach 8x8 – 4 obiekty Surface 8x8, 4x4, 2x2, 1x1 – reprezentujące mipmapy8x8, 4x4, 2x2, 1x1 – reprezentujące mipmapy W D3D9 możliwość bezpośredniego dostępu do SurfaceW D3D9 możliwość bezpośredniego dostępu do Surface DirectX 9

12 SurfaceSurface Depth-Stencil bufferDepth-Stencil buffer IDirect3Dsurface z formatem depth-stencilIDirect3Dsurface z formatem depth-stencil RenderTarget oraz RenderTargetTextureRenderTarget oraz RenderTargetTexture CubeTextureCubeTexture VolumetricTextureVolumetricTexture DirectX 9

13 RenderTargetRenderTarget Odmienne działanieOdmienne działanie D3D9 oferuje dwa rodzaje RTD3D9 oferuje dwa rodzaje RT Zwykłe RT (IDirect3DDevice9::CreateRenderTarget)Zwykłe RT (IDirect3DDevice9::CreateRenderTarget) Tworzy IDirect3DSurface9Tworzy IDirect3DSurface9 Texture Render Target (IDirect3DDevice9::CreateTexture wraz z flagą D3DUSAGE_RENDERTARGET)Texture Render Target (IDirect3DDevice9::CreateTexture wraz z flagą D3DUSAGE_RENDERTARGET) Tworzy IDirect3DTextureTworzy IDirect3DTexture Który posiada kolekcję IDirect3DSurfaceKtóry posiada kolekcję IDirect3DSurface TRT mogą być po wrenderowaniu używane jako zwykłe texturyTRT mogą być po wrenderowaniu używane jako zwykłe textury DirectX 9

14 RenderTargetRenderTarget RenderTarget2D w XNA tworzy render target textureRenderTarget2D w XNA tworzy render target texture Różnice występują w trybie multisamplowaniaRóżnice występują w trybie multisamplowania RenderTarget może mieć multisamplingRenderTarget może mieć multisampling TextureRT nie możeTextureRT nie może Renderujemy do MSAA RTRenderujemy do MSAA RT Resolve do textury RTResolve do textury RT W D3D9 jest to robione manualnieW D3D9 jest to robione manualnie XNA tworzy dodatkową tymczasową texturęXNA tworzy dodatkową tymczasową texturę RenderTarget2D.GetTexture dokonuje automatycznego przepisania - ResolveRenderTarget2D.GetTexture dokonuje automatycznego przepisania - Resolve DirectX 9

15 Resource PoolsResource Pools D3D9 posiada kilka trybów zarządzania obiektami w pamięciD3D9 posiada kilka trybów zarządzania obiektami w pamięci Obiekty sa przechowywane w 4 ResourcePoolach różniących się sposobem jak i miejcem przechowywania w pamięciObiekty sa przechowywane w 4 ResourcePoolach różniących się sposobem jak i miejcem przechowywania w pamięci D3DPOOLD3DPOOL DirectX 9

16 typedef enum D3DPOOL { D3DPOOL_DEFAULT = 0, D3DPOOL_MANAGED = 1, D3DPOOL_SYSTEMMEM = 2, D3DPOOL_SCRATCH = 3, D3DPOOL_FORCE_DWORD = 0x7fffffff } D3DPOOL, *LPD3DPOOL;typedef enum D3DPOOL { D3DPOOL_DEFAULT = 0, D3DPOOL_MANAGED = 1, D3DPOOL_SYSTEMMEM = 2, D3DPOOL_SCRATCH = 3, D3DPOOL_FORCE_DWORD = 0x7fffffff } D3DPOOL, *LPD3DPOOL; DirectX 9

17 D3DPOOL_DEFAULTD3DPOOL_DEFAULT Separowany RP od innychSeparowany RP od innych Znajduje się w pamięci preferowanejZnajduje się w pamięci preferowanej Zwykle jest to pamięc karty graficznej, bądź pamięć łączona AGPZwykle jest to pamięc karty graficznej, bądź pamięć łączona AGP DirectX 9

18 D3DPOOL_MANAGEDD3DPOOL_MANAGED Obiekty automatycznie w miarę potrzeb kopiowane do pamięci łatwo dostępnej z poziomu urządzeniaObiekty automatycznie w miarę potrzeb kopiowane do pamięci łatwo dostępnej z poziomu urządzenia Istnieją w pamięci systemowejIstnieją w pamięci systemowej W razie utraty kontekstu urządzenia nie wymagają ponownego utworzeniaW razie utraty kontekstu urządzenia nie wymagają ponownego utworzenia DirectX 9

19 D3DPOOL_SYSTEMMEMD3DPOOL_SYSTEMMEM Obiekty przechowywane w pamięci systemowej, konsumują RAM ale nie są stronicowaneObiekty przechowywane w pamięci systemowej, konsumują RAM ale nie są stronicowane Mogą być lockowane i updateowaneMogą być lockowane i updateowane Nie muszą być ponownie tworzoneNie muszą być ponownie tworzone Zwykle nie są dostępne z poziomu D3DDeviceZwykle nie są dostępne z poziomu D3DDevice DirectX 9

20 D3DPOOL_SCRATCHD3DPOOL_SCRATCH Obiekty przechowywane w pamięci systemowej, konsumują RAM ale nie są stronicowaneObiekty przechowywane w pamięci systemowej, konsumują RAM ale nie są stronicowane Nie muszą być ponownie tworzoneNie muszą być ponownie tworzone Nie są dostępne z poziomu D3DDeviceNie są dostępne z poziomu D3DDevice Nie posiadają ograniczeń i restrykcjiNie posiadają ograniczeń i restrykcji Podlegają Create, Lock, CopyPodlegają Create, Lock, Copy DirectX 9

21 XNA wybiera ResourcePool za nasXNA wybiera ResourcePool za nas Textury, VB, IB jako obiekty nie zmieniające się trafiają do D3DPOOL_MANAGEDTextury, VB, IB jako obiekty nie zmieniające się trafiają do D3DPOOL_MANAGED Obiekty dynamiczne jak RT, Surface, ResolveTexture2D textures, DynamicVB, DynamicIB trafiają do D3DPOOL_DEFAULTObiekty dynamiczne jak RT, Surface, ResolveTexture2D textures, DynamicVB, DynamicIB trafiają do D3DPOOL_DEFAULT DirectX 9

22 PoolD3DUSAGE_RENDERTARGETD3DUSAGE_DEPTHSTENCIL D3DPOOL_DEFAULT xx D3DPOOL_MANAGED D3DPOOL_SCRATCH D3DPOOL_SYSTEMMEM

23 DirectX 9 PoolD3DUSAGE_DYNAMICD3DUSAGE_AUTOGENMIPMAP D3DPOOL_DEFAULT xx D3DPOOL_MANAGED x D3DPOOL_SCRATCH D3DPOOL_SYSTEMMEM x

24 D3DXD3DX Biblioteka pomocniczaBiblioteka pomocnicza Funkcje pomocniczeFunkcje pomocnicze Tworzenie texturTworzenie textur Kompilowanie shaderówKompilowanie shaderów Funkcje D3DX bezpośrednio odwołują się APIFunkcje D3DX bezpośrednio odwołują się API Są postrzegane przez driver jako wywołania D3D i tak należy je traktowaćSą postrzegane przez driver jako wywołania D3D i tak należy je traktować DirectX 9

25 PIXPIX Aplikacja z DX3D SDKAplikacja z DX3D SDK Umożliwia debuggowanie, przeglądanie i analizowanie obiektów oraz kolejnych kroków wykonywanych przez kartęgraficznąUmożliwia debuggowanie, przeglądanie i analizowanie obiektów oraz kolejnych kroków wykonywanych przez kartęgraficzną PIX

26 EksperymentEksperyment Pojedyncza skonfigurowana instancja PIXaPojedyncza skonfigurowana instancja PIXa Jako target application wybieramy.exe naszej aplikacjiJako target application wybieramy.exe naszej aplikacji Zwykle wersja w trybie debugZwykle wersja w trybie debug Musi zawierać dane do obsługi PIXaMusi zawierać dane do obsługi PIXa HandleHandle Informacje debugoweInformacje debugowe XNA samo realizuje przygotowanie jeśli działa w profilu debugXNA samo realizuje przygotowanie jeśli działa w profilu debug W D3D należy dodać handle oraz kompilować shadery wraz z informacją do debuguW D3D należy dodać handle oraz kompilować shadery wraz z informacją do debugu PIX

27 CaptureCapture PIX dokonuje tzw. CapturePIX dokonuje tzw. Capture Chwyta aktualną klatkę bądź strumień klatekChwyta aktualną klatkę bądź strumień klatek Umożliwia zapis do anlizyUmożliwia zapis do anlizy Możliwość zgrania całego Command Buffera oraz resourców z karty graficznej, zapisanie na dysku w celu ponownej analizy bądź przetestowania w odmiennej konfiguracji driverów/sprzętuMożliwość zgrania całego Command Buffera oraz resourców z karty graficznej, zapisanie na dysku w celu ponownej analizy bądź przetestowania w odmiennej konfiguracji driverów/sprzętu PIX

28 Tryby CaptureTryby Capture Statistic for each frameStatistic for each frame PIX nagrywa określony Counterset podczas działania aplikacjiPIX nagrywa określony Counterset podczas działania aplikacji Kolekcja Performance Counters, śledzących określone statystyki aplikacjiKolekcja Performance Counters, śledzących określone statystyki aplikacji Np. liczba DrawCalliNp. liczba DrawCalli Możliwość włączenia HUDa i podglądu w czasie działania aplikacjiMożliwość włączenia HUDa i podglądu w czasie działania aplikacji Możliwość wyboru jak i dodawania nowych Counterów do śledzenia zaawansowanych statystykMożliwość wyboru jak i dodawania nowych Counterów do śledzenia zaawansowanych statystyk PIX

29 Statistic for each frameStatistic for each frame Przydatne do ogólnej analizy aplikacjiPrzydatne do ogólnej analizy aplikacji Ocena działania w trakcieOcena działania w trakcie Różnice podczas zmiany instancingu, oświetleniaRóżnice podczas zmiany instancingu, oświetlenia Zmiany wnikające z budowy leveluZmiany wnikające z budowy levelu Przejście z wnętrz do obszarów otwartychPrzejście z wnętrz do obszarów otwartych Analiza podmodułówAnaliza podmodułów Np. wydajność i efektywność systemu cząsteczkowegoNp. wydajność i efektywność systemu cząsteczkowego PIX

30 A single frame captureA single frame capture Zapisuje wszystkie events, API calls, resource states z pojedynczej klatkiZapisuje wszystkie events, API calls, resource states z pojedynczej klatki Wywoływane na zlecenie (default F12)Wywoływane na zlecenie (default F12) Enable draw timingEnable draw timing PIX mierzy czas potrzebny na wykonanie każdego callaPIX mierzy czas potrzebny na wykonanie każdego calla Przydatne w razie analizy pojedynczej klatkiPrzydatne w razie analizy pojedynczej klatki Dziwne zachowaniaDziwne zachowania ArtefaktyArtefakty Spadek wydajnościSpadek wydajności Sprawdzenie dogłębne konkretnej sytuacjiSprawdzenie dogłębne konkretnej sytuacji PIX

31 A log of all D3D/D3DX calls madeA log of all D3D/D3DX calls made Zapisauje wszystkie calle z danej ramkiZapisauje wszystkie calle z danej ramki A replayable Direct3D call streamA replayable Direct3D call stream Zapisuje wszystkie calle do plikuZapisuje wszystkie calle do pliku Można ponownie odtworzyć strumień calliMożna ponownie odtworzyć strumień calli Bardzo przydatne w testowaniu występowania artefaktu z winy driverów bądź GPUBardzo przydatne w testowaniu występowania artefaktu z winy driverów bądź GPU Maszyna z artefaktem strzela capture, prawidłowa odpala capture i poszukuje różnic w wykonaniu w celu korekcjiMaszyna z artefaktem strzela capture, prawidłowa odpala capture i poszukuje różnic w wykonaniu w celu korekcji PIX

32 Advanced CaptureAdvanced Capture Umożliwia dodawanie jak i cutomizację obecnych CountersetówUmożliwia dodawanie jak i cutomizację obecnych Countersetów Możliwość podpięcia zewnętrznych pluginów do analizyMożliwość podpięcia zewnętrznych pluginów do analizy Np. Nvidia Perf KitNp. Nvidia Perf Kit PIX

33 Podsumowanie For more information contact me hello@drobot.org Slides will be available at Drobot.org

34 Questions ?


Pobierz ppt "Graphics Debugging Michał Drobot Technical Art Director Reality Pump."

Podobne prezentacje


Reklamy Google