HLSL debugowanie
Debuger HLSL, który jest jednym z narzędzi Graphics Diagnostics w ułatwia poznanie sposobu, w jaki działa kod modułu cieniującego HLSL z danymi graficznymi zarejestrowanymi podczas sesji przechwytywania w programie Graphics Diagnostics.
To jest debuger języka HLSL:
Opis debugera HLSL
Debuger HLSL ułatwia lepsze poznanie problemów, które występują w kodzie modułu cieniującego.Debugowanie kodu języka HLSL w programie Visual Studio jest podobne do debugowania kodu napisanego w innych językach — na przykład C++, C# lub Visual Basic.Można zbadać zawartość zmiennych, ustawić punkty przerwania, wykonywać kod krokowo i przechodzić przez stos wywołań, podobnie jak podczas debugowania innych języków.
Jednak ponieważ sprzęt i oprogramowania procesora CPU (kod aplikacji) są tak różne od sprzętu i oprogramowania procesora GPU (kod programu do cieniowania), debugowanie znane z procesora CPU nie jest możliwe na procesorze GPU, chyba że debuger GPU działa w fundamentalnie inny sposób.Podstawowa różnica między sposobem działania procesorów GPU i CPU polega na tym, że praca rozdzielona na setki procesorów GPU odbywa się względnie wolno — po prostu są to procesory zoptymalizowane do operacji graficznych i obsługi bardzo dużych zestawów danych. Wystarczy jednak niewielka liczba procesorów CPU, aby praca przebiegała względnie szybko — są to skomplikowane procesory ogólnego przeznaczenia do obsługi mniejszych obciążeń.Ponieważ zasadniczo procesor GPU to niezależny komputer, który zarządza swoją wewnętrzną i tylko rzadko udostępnia informacje z procesorowi CPU, bardzo trudno debugerowi działającemu na procesorze CPU dowiedzieć, co się dzieje w procesorze GPU w danym momencie.Nawet jeśli procesor CPU sobie poradzi, kod procesora GPU używa zbyt wiele wątków i generuje zbyt dużo danych, aby deweloper mógł go skutecznie przeanalizować.
Aby uniknąć tych trudności, debuger HLSL odtwarza przechwycone ramki przy użyciu informacji zarejestrowanych w dzienniku grafiki, zamiast monitorować GPU w czasie rzeczywistym w trakcie działania kodu modułu cieniującego.Ponieważ dziennik grafiki zawiera wystarczająco dużo informacji, aby odtworzyć wszystkie części obiektów wyjściowych, a program Graphics Diagnostics zapewnia narzędzia, które mogą pomóc zidentyfikować dokładny piksel i zdarzenie, gdzie występuje błąd, debuger języka HLSL musi tylko zasymulować dokładny wątek programu do cieniowania, który Cię interesuje.Oznacza to, że działanie programu do cieniowania może być symulowane w procesorze CPU, gdy działanie jego wewnętrznych mechanizmów jest w pełni widoczne.Dzięki temu debugger HLSL otrzymuje debugowanie podobne do procesora.
Jednak debuger języka HLSL jest obecnie ograniczony w następujące sposoby:
Debuger HLSL nie obsługuje operacji edytuj-i-kontynuuj.
Nie jest możliwe debugowanie aplikacji i jej kodu cieniowania w tym samym czasie.Można jednak używać ich zamiennie.
W oknie czujki można dodać zmienne i rejestry, ale wyrażenia nie są obsługiwane.
Cieniowania obliczane nie są obsługiwane.
Niemniej jednak debuger języka HLSL oferuje lepsze, przypominające zachowanie znane z procesorów CPU debugowanie niż byłoby to możliwe w innym przypadku.
Zobacz też
Zadania
Instruktaż: Brak obiektów z powodu do cieniowania wierzchołków
Instruktaż: Debugowanie renderowania błędów spowodowanych cieniowanie