Co może powodować, że ALT-TAB jest „denerwujący” / wolny / glitchy?

25

To jest bardziej otwarte pytanie, ale mam nadzieję, że uzyskam dobry wgląd w to, jak uniknąć tego problemu.

Podczas grania w gry w systemie Windows może być konieczne użycie klawisza ALT-TAB. Niektóre gry nie mają problemów, inne nie są takie proste: mogą wymagać WIEKU, aby się wycofać i ponownie włączyć. Niektóre są nawet podatne na awarie lub dziwne zachowania, takie jak zniekształcenie grafiki lub jąkanie.

Zastanawiam się tylko, co powoduje takie zachowanie? Czy to bardziej DirectX czy OpenGL? Czy jest to spowodowane tym, że Gry są „sprytne” i buforują / czyszczą pamięć podręczną przy każdej zmianie ustawień ekranu? (Zakładam, że dostają jakiś sygnał, kiedy ALT-TAB?)

Nie mam własnych problemów, ale chciałbym wiedzieć, czego unikać i która „sprytna” sztuczka może powodować tego rodzaju okropne wrażenia klientów?

Michael Stum
źródło
1
Świetne pytanie! Mamy nadzieję, że jak zwykle otrzymamy wnikliwe odpowiedzi!

Odpowiedzi:

17

W niektórych sytuacjach ALT-TAB spowoduje utratę urządzenia DirectX. W przypadku zagubienia urządzenia wszystkie zasoby GPU (wierzchołki, tekstury, moduły cieniujące itd.) Należy uznać za nieprawidłowe i nie można ich ponownie użyć. Odniesienie do MSDN tutaj .

Te utracone zasoby należy zwolnić, a następnie odtworzyć po przywróceniu urządzenia. W przypadku większości gier przywracanie tych zasobów wymaga ponownego załadowania dużej ilości danych z dysku - często ta sama procedura ładowania, co na początku gry / poziomu.

Co można zrobić, aby tego uniknąć?

  • Możesz przechowywać pamięć podręczną swoich danych w pamięci RAM, więc przesyłanie ich z powrotem do GPU będzie szybsze niż ponowne ładowanie z HD. Wierzę, że istnieje sposób, aby DirectX zrobił to automatycznie.
  • Użyj nowej wersji DirectX. Ten cytat ( źródło ) pochodzi z MSDN na DirectX 9Ex:

Urządzenia gubią się teraz tylko w dwóch okolicznościach; po zresetowaniu sprzętu, ponieważ wisi on, i po zatrzymaniu sterownika urządzenia. Gdy sprzęt się zawiesi, urządzenie można zresetować, wywołując ResetEx. Jeśli sprzęt się zawiesi, pamięć tekstur zostanie utracona.

CiscoIPPhone
źródło
Czy możesz podać link do tej oferty? Stwierdzamy, że urządzenie zgubiło się również po zablokowaniu pulpitu.
Kylotan
Dodałem link do wyceny.
CiscoIPPhone
1
zmiana zachowania DirectX jest efektem ubocznym zmiany modelu sterownika. Oznacza to, że wymaga WDDM. SO to tylko Vista / Win7.
Bahbar
7

W Direct3D urządzenie może się zgubić, gdy ALT-TAB zniknie z okna pełnego ekranu. Jeśli tak się stanie, musisz zwolnić i przywrócić zasoby oraz zresetować urządzenie. Może to być trudne do zrobienia poprawnie, w zależności od złożoności gry lub lenistwa programistów (cześć Valve!). Nie sądzę, że OpenGL ma ten sam problem, ponieważ sterownik jest odpowiedzialny za utrzymanie kontekstu OpenGL dla ciebie, ale nie jestem pewien.

Na StackOverflow znajduje się pytanie o najlepsze praktyki obsługi ALT-TAB w aplikacji DirectX, która zawiera przydatne linki z MSDN i innych źródeł.

Firas Assaad
źródło
3
Masz rację, powodem, dla którego OpenGL nie cierpi (tak bardzo) z tego powodu, ponieważ sterownik przechowuje dla ciebie kopię wszystkiego w systemie Windows. Może to powodować, że aplikacje GL będą zużywać więcej pamięci RAM niż aplikacje DX, ale dobrze zachowana aplikacja DX powinna buforować wszystko, na wypadek gdyby i tak musiała przywrócić dane kontekstowe, co sprowadza się do odpowiedzialności za buforowanie.
Branan
To prawda (o OpenGL).
topright
0

Może to być dostępna ilość bezpłatnego pamięci RAM. Jeśli jest za nisko, podczas gry gra Windows ukrywa większość swoich usług w obszarze wymiany (tzn. Pobiera większość danych załadowanych do pamięci RAM i zamiast tego umieszcza je w specjalnym obszarze dysku twardego) w celu gry mieć jak najwięcej dostępnej pamięci RAM.

Następnie, gdy Alt + Tab z gry do systemu Windows, te usługi muszą zostać załadowane do pamięci RAM, aby działać, więc pobierze dane gry z pamięci RAM, zapisze je w zamianie i wyciągnie dane systemu Windows z zamiana na RAM.

I jak wiadomo, zapis na dysk twardy może zająć WIEK w porównaniu z pamięcią RAM. To samo dzieje się także po wyjściu z ciężkiej gry. Dlatego posiadanie wystarczającej ilości pamięci RAM dla gry i okien może być naprawdę wygodniejsze.

Aurelien Ribon
źródło