Udostępnij za pośrednictwem


Graphics Frame Analysis

Można użyć analizy ramki grafiki w Visual Studio diagnostyki grafiki do analizy i optymalizacji wydajności renderowania Direct3D gry lub aplikacji.

[!UWAGA]

Od wersji programu Visual Studio 2013 Update 3, diagnostyki grafiki narzędzia windows znajdują się w niezależne kopię powłoki programu Visual Studio.Ta dostosowana powłoka o nazwie analizy grafiki eliminuje niepotrzebne menu i opcji, ale w przeciwnym razie ramki analizy i przepływu pracy są taka sama jak przed.Aby uzyskać więcej informacji na temat tej zmiany, zobacz Diagnostyka grafiki — Przegląd.

Analiza ramki

Analiza ramki używa informacje, które jest przechwytywana w pliku dziennika grafiki do celów diagnostycznych, ale używa do podsumowania zamiast renderowania wydajności.Informacje o wydajności nie została zarejestrowana w dzienniku podczas przechwytywania. Zamiast tego informacje o wydajności jest generowany później, podczas analizy ramki przez zdarzenia czasowe i zbieranie statystyk jako ramki jest odtwarzany.Ta metoda ma wiele zalet w porównaniu rejestrowania informacji o wydajności podczas przechwytywania:

  • Analizy ramki można średnie wyniki z poszczególnymi wielu odtworzeniami tej samej ramki upewnij się, że wydajności podsumowania jest statystycznie dźwięku.

  • Analiza ramki może powodować generowanie informacji o konfiguracji sprzętu i urządzenia gdzie przechwycenia informacji o wydajności.

  • Analiza ramki może powodować generowanie nowego podsumowania wydajności z wcześniej przechwycone dane — na przykład, jeśli sterowniki GPU są optymalizowane lub udostępnienia dodatkowych funkcji debugowania.

Oprócz tych korzyści analizy ramki można również zmienić sposób renderowania ramki podczas odtwarzania, aby go przedstawiają informacje jak te zmiany mogą wpłynąć na wydajność renderowania aplikacji.Podjęcie wśród potencjalnych strategie optymalizacji bez konieczności wszystkich je wdrożyć i następnie przechwycić i porównaj wszystkie wyniki samodzielnie, można użyć tych informacji.

Chociaż analizy ramki przede wszystkim celem jest uzyskanie renderowania szybsza, tak samo ułatwia osiągnąć lepszą jakość visual elementu docelowego wydajności danego lub ograniczyć zużycie energii procesora graficznego.

Aby wyświetlić pokaz analizy ramki czynności dla aplikacji, możesz obserwować programu Visual Studio grafiki ramki analizy wideo w Channel 9.

Za pomocą analizy ramki

Aby móc używać analizy ramkę, należy przechwytywanie informacji grafiki z aplikacji podczas jego działania, tak jak podczas korzystania z diagnostyki grafiki.Następnie w oknie grafiki dziennik dokumentu (.vsglog) wybierz analizy ramki karty.

Wybierz kartę Frame analizy.

Po zakończeniu analizy wyniki są wyświetlane.W górnej części karty analizy ramki Wyświetla oś czasu i tabela podsumowująca.W dolnej części Wyświetla tabele Szczegóły.Jeśli podczas odtwarzania wygenerowane błędów lub ostrzeżeń, są podsumowywania powyżej osi czasu; z tego miejsca można wykonać łącza, aby dowiedzieć się więcej na temat błędy i ostrzeżenia.

Interpretacja wyników

Przy interpretacji wyników każdy wariant, mogą wywnioskować, że przydatne informacje dotyczące aplikacji użytkownika renderowania wydajności i zachowania.Aby uzyskać więcej informacji na temat renderowanie wariantów, zobacz wariantów później w tym artykule.

Niektóre wyniki bezpośrednio wskazuje, jak wariant wpływa na wydajność renderowania:

  • Jeśli wariant dwuliniowa filtrowanie struktury był zwiększenie wydajności, następnie za pomocą struktury dwuliniowa filtrowanie w swojej aplikacji będzie widoczna podobne zwiększenie wydajności.

  • Jeśli okienko ekranu wariant 1 x 1 był zwiększenie wydajności, następnie redukcję rozmiaru celów renderowania w swojej aplikacji zwiększa wydajność jego renderowania.

  • Jeśli wariant BC struktury kompresji był zwiększenie wydajności, następnie za pomocą kompresji struktury BC w swojej aplikacji będzie widoczna podobne zwiększenie wydajności.

  • Jeśli wariant 2xMSAA ma praktycznie tej samej wydajności jako wariant 0xMSAA, można włączyć 2xMSAA w swojej aplikacji do poprawy jakości jego renderowania bez kosztu wydajności.

Inne wyniki zasugerować dalej, aspekty wpływ na wydajność aplikacji:

  • Jeśli wariant okienko ekranu 1 x 1 wykazuje wzrost wydajności bardzo duży, aplikacji prawdopodobnie zużywa fillrate więcej niż dostępna.Jeśli ten wariant przedstawia nie zwiększenie wydajności, aplikacji jest prawdopodobnie przetwarzania zbyt wiele wierzchołków.

  • Jeśli wariant formatu docelowego renderowania 16bpp wykazuje wzrost wydajności znaczących, aplikacji prawdopodobnie zużywa przepustowości zbyt dużej ilości pamięci.

  • Jeśli wariant Half/Quarter struktury wymiarów wykazuje wzrost wydajności znaczących, swoje tekstury prawdopodobnie zajmują zbyt dużej ilości pamięci i używać nadmiernej przepustowości ani do używania pamięci podręcznej struktury nieefektywne.Jeśli ten wariant zawiera żadnych zmian w wydajności, prawdopodobnie można użyć tekstury większych, bardziej szczegółowe bez płatności zmniejszenie wydajności.

Gdy sprzętu liczniki są dostępne, umożliwia ich zebrać bardzo szczegółowe informacje dotyczące dlaczego może dotkniętych wydajności renderowania swojej aplikacji.Wszystkie urządzenia 9.2 i nowszych funkcji na poziomie obsługuje kwerend zamknięcia głębokość (pikseli occluded licznika) i znacznikami czasu.Inne liczniki sprzętu mogą być dostępne, w zależności od tego, czy producenta GPU ma zaimplementowany liczniki sprzętu i uwidaczniane je w jej sterownika.Używamy tych liczników o potwierdzenie dokładne przyczyny wyniki wyświetlane w tabeli podsumowania — na przykład można określić, czy overdraw jest czynnikiem sprawdzając procent pikseli, które zostały occluded teście głębokość.

Oś czasu i tabela podsumowująca

Domyślnie osi czasu i podsumowanie tabeli są wyświetlane i innych sekcji są zwinięty.

Oś czasu

Oś czasu prezentuje przegląd czasy połączeń rysuje względem siebie.Ponieważ paski większych odpowiada dłużej rysuje razy, służy ona odnajdywanie najbardziej kosztowne wywołań rysuje w ramach.Gdy przechwycone ramki zawiera dużą liczbę wywołań rysuje, wiele rysuje przez wywołania są połączone w jeden pasek o długości jest sumą tych Rysuj wywołań.

Osi czasu pokazuje koszty rysuje połączenia.

Wskaźnik na pasku, aby zobaczyć, które zdarzenie wywołania rysuje odpowiada na pasku przewijania.Zaznaczając pasek powoduje, że na liście zdarzeń do synchronizacji do tego zdarzenia.

tabela

Spis liczby osi czasu przedstawia wydajność względna każdy wariant renderowania dla każdego połączenia rysuje w odniesieniu do renderowania domyślne swojej aplikacji.Każda kolumna Wyświetla wariant różnych renderowanie i każdy wiersz reprezentuje wywołanie rysowania różnych identyfikowane w kolumnie lewej; w tym miejscu można wykonać łącze do zdarzeń w oknie grafiki listy zdarzeń.

Tabela podsumowująca zawiera różne varients.

Druga kolumna w tabeli podsumowanie lewej wyświetla czas renderowania podstawy swoją aplikację — oznacza to, że zwiększy się czas potrzebny na odwzorowanie domyślne swoją aplikację w celu uwierzytelnienia połączenia rysuje.Pozostałe kolumny Pokaż względnym wydajność każdy wariant renderowania w procentach linii bazowej tak, aby łatwiej sprawdzić, czy jest wydajność.Większa niż 100 procent wartości procentowe trwało dłużej niż określanie poziomu odniesienia — oznacza to, że wydajność aplikacji zmieniła się w dół — procent mniejsze niż 100 procent trwało krócej i — wydajność aplikacji zmieniła.

Wartości zarówno bezwzględny czas linii bazowej i względnych terminy renderowanie wariantów są faktycznie średnią średnie wiele uruchomień — 5 domyślnie.Ta przeciętne ułatwia danych czasu stabilny i spójny.Umieszczeniu wskaźnika myszy na każdą z komórek w tabeli, należy sprawdzić, czy wartości minimalnej, wygenerowane maksymalny, średnia i wartości czasu środkowej, które były przestrzegane wyniki odpowiedniego rysowania połączeń i wariant renderowania.Wyświetlana jest także czasu podstawy.

Rysuj "Hot" wywołań

Aby zwrócić uwagę, aby narysować wywołań, które zużywać więcej ogólnych czas renderowania lub które może być niezwykle powolne przyczyn, które można uniknąć, wiersz, który zawiera te wywołania "hot" Rysuj jest przyciemnione czerwony, gdy terminy podstawy jest więcej niż jeden odchylenie standardowe dłużej niż średni czas podstawy wywołań rysuje w ramach.

To wywołanie DrawIndexed ma varients na gorąco i na zimno.

Obserwowane

Aby zwrócić uwagę na renderowania zmian, które mają największą zgodność, analizy ramki określa wartości obserwowane każdy wariant renderowanie i wyświetla znaczne tymi jako pogrubione.Wyświetla te, które zwiększyć wydajność jako zielony i te, które zmniejszyć wydajność jest zamieniany.Wyświetla wyniki, które nie są statystycznie istotne jako typ normalnego.

Statystycznych relevence o wariantów wywołanie draw

Aby określić istotności statystycznej analizy ramki używa t Studenta.

Tabela szczegółów

Podsumowanie tabeli Oto szczegóły tabeli, która jest domyślnie zwinięta.Zawartość tabeli Szczegóły zależy od platformy sprzętowej komputera odtwarzania.Informacji o obsługiwanych sprzęcie, zobacz pomocy technicznej dotyczącej sprzętu.

Platformy, które nie obsługują liczniki sprzętu

Większość platformy nie obsługują w pełni liczniki GPU sprzętu — obejmują one wszystkich procesorów GPU obecnie oferowanych przez Intel, AMD i nVidia.Jeśli nie ma żadnych liczników sprzętu do gromadzenia, jest wyświetlana tylko jedna tabela szczegółów i zawiera Średni czas bezwzględny wszystkich wariantów.

Tabela szczegółów i niektóre varients odtwarzania.

Platformy, które obsługuje liczniki sprzętu

Dla platformy, które obsługuje liczniki GPU sprzętu — na przykład nVidia T40 SOC i wszystkie SOCs Qualcomm — kilku tabel szczegóły są wyświetlane, jedno dla każdej wariant.Każdy licznik sprzętu dostępne są zbierane dla każdego renderowanie wariantów i wyświetlane w tabeli Szczegóły.

Liczniki sprzętu są wyświetlane, gdy obsługiwane.

Informacje o liczniku sprzętu zapewnia bardzo szczegółowy widok zachowanie określonej platformy sprzętu dla każdego połączenia rysuje, co może pomóc w zidentyfikowaniu przyczyny wąskich gardeł wydajności bardzo dokładnie.

[!UWAGA]

Inny sprzęt platformy obsługują różne liczników; nie istnieje standard.Liczniki i ich znaczenie są określane wyłącznie przez każdy producent procesora graficznego.

Zdarzenia i regionów znacznika

Analiza ramki obsługuje znaczniki zdarzeń zdefiniowanych przez użytkownika i grup zdarzeń.Są wyświetlane w tabeli podsumowania, a w tabelach szczegółów.

Interfejsy API ID3DUserDefinedAnnotation lub starsze rodziny D3DPERF_ interfejsów API umożliwia tworzenie znaczników i grupy.Gdy użytkownik korzysta z rodziny D3DPERF_ interfejsu API, można przypisać każdego znacznika i grupy kolor ramki analizy ma być wyświetlana jako kolorowe pasma w wierszy zawierających znacznika zdarzenia lub znaczniki rozpocząć/koniec grupy zdarzeń i ich zawartość.Ta funkcja może ułatwić szybką identyfikację ważne renderowania zdarzeń lub grup zdarzeń.

Ostrzeżenia i błędy

Analiza ramki od czasu do czasu kończy z ostrzeżeń lub błędów, które są podsumowywania powyżej osi czasu, a szczegółowe u dołu kartę Frame analizy.

Zazwyczaj ostrzeżenia i błędy są tylko do celów informacyjnych i nie wymaga działania.

Ostrzeżenia zwykle wskazywać, że obsługa sprzętu braku, ale można pracować wokół, nie mogą być zebrane liczniki sprzętu, lub niektórych danych wydajności nie może być wiarygodne — na przykład, jeśli rozwiązanie niekorzystny ma wpływ na go.

Błędy zwykle wskazywać, że wykonania analizy ramki ma usterki, sterownik ma usterki, pomoc techniczna dla sprzętu jest braku łączności i nie może być pracy wokół, lub aplikacja próbuje coś, co nie jest obsługiwane przez odtwarzania.

Ponowne próby

Jeśli GPU podlega przejściu stan energii podczas analizy ramkę, przebiegu objęte analizy musi być ponowiona ponieważ szybkość zegara GPU zmieniony tak, a tym samym unieważnienie wyniki względnym czasu.

Analiza ramki ogranicza liczbę ponownych prób do 10.Platformy ma zarządzania energii lub bramkowanie zegara, może spowodować powstanie analizy ramki niepowodzenie, zgłoś błąd, ponieważ został przekroczony limit ponownych prób.Może być może rozwiązania problemu po zresetowaniu zarządzania energią danej platformy i zegar szybkość ograniczanie za mniej skuteczną, jeśli platformę umożliwia on.

Pomoc techniczna dla sprzętu

Kwerendy znacznikami czasu i zamknięcia.

Znacznikami czasu są obsługiwane na wszystkie platformy, które obsługuje ramki analizy.Głębokość zamknięcia kwerendy — wymagane licznika Occluded pikseli — są obsługiwane na platformach obsługujących funkcję poziom 9.2 lub nowszy.

[!UWAGA]

Chociaż znacznikami czasu są obsługiwane na wszystkich platformach obsługujących analizę ramkę, dokładności i spójności znacznikami czasu różni się w zależności od platformy.

Liczniki GPU

Obsługa GPU sprzętu liczników jest zależne od sprzętu.

Ponieważ żaden komputer aktualnie oferowanych przez Intel, AMD lub nVidia GPU niezawodnie obsługuje liczniki sprzętu GPU, analizy ramki nie zebrać liczników z nich.Jednak analizy ramki zebrać liczników sprzętu z tych procesorów GPU, które je obsługują niezawodnie:

  • SOCs Qualcomm, (wszelkie obsługującego systemu Windows Phone)

  • nVidia T40 (Tegra4).

Nie inne platformy, która obsługuje ramki analizy zbiera dane liczników sprzętu GPU.

[!UWAGA]

Ponieważ GPU sprzętu liczniki są zasoby sprzętowe, może trwać wiele przekazuje do gromadzenia kompletny zestaw sprzętu liczniki dla każdego wariant renderowania.W związku z tym kolejności, w których GPU liczniki są zbierane jest nieokreślona.

Systemu Windows phone

Znacznikami czasu, zamknięcia kwerend i GPU sprzętu liczniki są obsługiwane tylko na urządzenia mobilne systemu Windows Phone, które dostarczonych z systemu Windows Phone 8.1.Analiza ramki wymaga tych Aby odtworzyć, że plik dziennika grafiki.Urządzenia mobilne systemu Windows Phone, które zostały dostarczonych z systemem Windows 8 nie obsługują analizy ramkę, nawet dla urządzenia mobilne, które zostały zaktualizowane do systemu Windows Phone 8.1.

Nieobsługiwane scenariusze

Niektóre sposoby za pomocą analizy ramki są nieobsługiwane lub zły pomysł.

ZAWIJANIA

Analiza ramki jest przeznaczona do używania profilu i uaktywniać na sprzęcie rzeczywistych.Uruchamianie analizy ramki na urządzeniach ZAWIJANIA nie jest uruchomiona — emulator systemu Windows Phone działa na ZAWIJANIA —, ale nie jest zazwyczaj zastanowić prowadzenia ponieważ ZAWIJANIA pracą wysokiej jakości Procesora jest mniejsza niż nawet najmniejszej możliwa nowoczesnych procesorów GPU, ponieważ ZAWIJANIA wydajności mogą się znacznie różnić w zależności od konkretnego Procesora jest uruchomiona na.

Odtwarzanie wysokiej funkcji poziomie przechwytuje na urządzeniach niskiego poziomu

W diagnostykę grafiki podczas odtwarzania pliku dziennika grafiki, który używa wyższym poziomie funkcji niż odtwarzanie komputer obsługuje, on automatycznie przechodzi do ZAWIJANIA.Analiza ramki go jawnie nie powrotu do ZAWIJANIA i generuje błąd — ZAWIJANIA przydaje się sprawdzenie poprawności Direct3D aplikacji, ale nie sprawdzenie jego wydajności.

[!UWAGA]

Należy pamiętać, problemy z poziomu funkcji, ale umożliwia przechwytywanie i odtwarzanie że grafiki dzienniki na różnych konfiguracji sprzętu i urządzeń.Na przykład można przechwycić grafiki informacji dotyczących systemu Windows Phone i odtworzyć go ponownie na komputerze stacjonarnym, a odwrotnej również jest obsługiwany.W obu przypadkach dziennika grafiki można odtwarzać wstecz tak długo, jak plik dziennika nie zawiera interfejsy API lub użyć poziomów funkcji, które nie są obsługiwane na komputerze odtwarzania.

Direct3D może również 10

Analizy ramki jest obsługiwana tylko w przypadku Direct3D 11 interfejsu API.Jeśli Twoja aplikacja wywołuje interfejs API 10 Direct3D, analizy ramki nie rozpoznaje lub ich profilu, mimo że ich rozpoznawany i używany przez diagnostyki grafiki.Jeśli Twoja aplikacja używa zarówno Direct3D11, jak i interfejsów API 10 Direct3D, profilowane są tylko wywołania Direct3D 11.

[!UWAGA]

Dotyczy to tylko Direct3D wywołania interfejsu API używasz, nie poziomów funkcji.Tak długo, jak używasz Direct3D 11, Direct3D 11.1 lub interfejsu API 11.2 Direct3D, można użyć tylko działają niezależnie od poziomu funkcji podoba Ci się i analizy ramki.

elementy Variant

Każdej zmiany, która analizy ramki sprawia, że sposób renderowania ramki podczas odtwarzania jest nazywana wariant.Warianty, które sprawdza, czy analiza ramki odpowiada wspólne, stosunkowo łatwo zmiany, które mogą tworzyć do poprawy wydajności renderowania lub visual jakość swojej aplikacji — na przykład redukcję rozmiaru tekstur, za pomocą struktury kompresji oraz włączania różnego rodzaju większy priorytet.Warianty Zastąp kontekstu renderowania zwykłego i parametry swojej aplikacji.Poniżej przedstawiono podsumowanie:

Wariant

Opis

Rozmiar obiektu Viewport 1 x 1

Zmniejsza wymiarów okienko ekranu dla wszystkich celów renderowania do 1 x 1 pikseli.

Aby uzyskać więcej informacji, zobacz 1x1 Viewport Size Variant.

0 x MSAA

Wyłącza wielu przykładowy większy priorytet (MSAA) dla wszystkich celów renderowania.

Aby uzyskać więcej informacji, zobacz 0x/2x/4x MSAA Variants.

2 x MSAA

Włącza 2 x wielu przykładowy większy priorytet (MSAA) dla wszystkich celów renderowania.

Aby uzyskać więcej informacji, zobacz 0x/2x/4x MSAA Variants.

4 x MSAA

Włącza 4 x wielu przykładowy większy priorytet (MSAA) dla wszystkich celów renderowania.

Aby uzyskać więcej informacji, zobacz 0x/2x/4x MSAA Variants.

Filtrowanie struktury punktu

Ustawia tryb filtrowania DXD11_FILTER_MIN_MAG_MIP_POINT (punkt filtrowanie struktury) dla wszystkich przykładów odpowiednie struktury.

Aby uzyskać więcej informacji, zobacz Point, Bilinear, Trilinear, and Anisotropic Texture Filtering Variants.

Filtrowanie dwuliniowa struktury

Ustawia tryb filtrowania DXD11_FILTER_MIN_MAG_LINEAR_MIP_POINT (filtrowanie dwuliniowa struktury) dla wszystkich przykładów odpowiednie struktury.

Aby uzyskać więcej informacji, zobacz Point, Bilinear, Trilinear, and Anisotropic Texture Filtering Variants.

Filtrowanie trilinear struktury

Ustawia tryb filtrowania DXD11_FILTER_MIN_MAG_MIP_LINEAR (trilinear struktury filtrowanie) dla wszystkich przykładów odpowiednie struktury.

Aby uzyskać więcej informacji, zobacz Point, Bilinear, Trilinear, and Anisotropic Texture Filtering Variants.

Filtrowanie anizotropowych struktury

Ustawia tryb filtrowania DXD11_FILTER_ANISOTROPIC i MaxAnisotropy do 16 (16 x filtrowanie struktury anizotropowej) dla wszystkich przykładów odpowiednie struktury.

Aby uzyskać więcej informacji, zobacz Point, Bilinear, Trilinear, and Anisotropic Texture Filtering Variants.

Format docelowy renderowania 16bpp

Ustawia format pikseli na DXGI_FORMAT_B5G6R5_UNORM (16bpp, 565 format) dla wszystkich renderowania celów i backbuffers.

Aby uzyskać więcej informacji, zobacz 16bpp Render Target Format Variant.

Generowanie mapy MIP

Włącza mapy mip na wszystkie tekstury, które nie są renderowane elementów docelowych.

Aby uzyskać więcej informacji, zobacz Mip-map Generation Variant.

Połowa struktury wymiarów

Zmniejsza wymiarów struktury na wszystkie tekstury, które nie są celów renderowania połowę jego oryginalny rozmiar w każdym wymiarze.Na przykład struktury 256 x 128 jest ograniczone do texels 128 x 64.

Aby uzyskać więcej informacji, zobacz Half/Quarter Texture Dimensions Variant.

Wymiary struktury kwartał

Zmniejsza wymiarów struktury na wszystkie tekstury, które nie są renderowane celów kwartału jego oryginalny rozmiar w każdym wymiarze.Na przykład struktury 256 x 128 jest ograniczone do texels 64 x 32.

Aby uzyskać więcej informacji, zobacz Half/Quarter Texture Dimensions Variant.

Kompresja struktury BC

Umożliwia zablokowanie kompresji na wszystkie tekstury, które mają B8G8R8X8, B8G8R8A8 lub R8G8B8A8 wariant formatu piksela.B8G8R8X8 format wariantów są kompresowane przy użyciu BC1; B8G8R8A8 i R8G8B8A8 format wariantów są kompresowane przy użyciu BC3.

Aby uzyskać więcej informacji, zobacz BC Texture Compression Variant.

Wynik dla większości wariantów jest opracowanego: "rozmiar struktury redukujące połowę 25 procent szybciej" lub "Włączanie 2 x MSAA ma tylko 2 procent wolniej".Inne warianty może wymagać więcej interpretacji — na przykład, jeśli wariant, który zmienia rozmiary okienko ekranu do 1 x 1 przedstawia przyrost wydajności duży, może to oznaczać, że renderowania jest bottlenecked przez współczynnik wypełnienia niski; Jeśli nie ulega zmianie znaczących wydajność, może to oznaczać, że renderowania jest bottlenecked, gdzie wierzchołku.