W jaki sposób Windows Aero zapobiega rozdzieraniu ekranu?

14

Gdy Windows Aero jest włączony, nie występuje rozrywanie ekranu, w przeciwieństwie do korzystania z motywu podstawowego bez Aero.

Dlaczego jednak gry z synchronizacją pionową wydają się mieć znacznie większe opóźnienie wejściowe niż podczas robienia czegoś na komputerze? Wydaje się nawet, że synchronizuje okna z wyłączoną synchronizacją pionową, lepiej niż byłoby, gdyby korzystały z dowolnej metody wbudowanej w grę.

Dlaczego i jak to się dzieje lub wydaje się, że tak się dzieje?

Jason Powers Murray
źródło

Odpowiedzi:

8

W rzeczywistości powodem, dla którego Aero może zapobiec rozerwaniu bez konieczności wymuszania włączenia VSYNC w aplikacji, jest to, że jest to menedżer okien do komponowania. Rysuje pulpit i wszystkie okna asynchronicznie względem dowolnej działającej aplikacji.

To znaczy, jeśli włączysz komponowanie w systemie Windows Vista / 7 ( zawsze jest ono włączone w systemie Windows 8), narysuje wszystkie okna za pomocą kopii ostatniego obrazu, który został zamieniony od tyłu do przodu. Kompozytor (Microsoft nazywa to DWM, Desktop Window Manager ) komponuje wszystko z włączoną VSYNC, a ponieważ rysuje przy użyciu kopii ostatniego w pełni zamienionego obrazu bufora przedniego dla każdego okna, nigdy nie wyświetla częściowo narysowanych ramek. Ma jednak niefortunny efekt uboczny, uniemożliwiając prawidłowe działanie naprawdę starego oprogramowania, które zostało zaprojektowane tak, aby pobierało się do przedniego bufora wyłącznie - ale nowoczesne oprogramowanie tego nie robi.

W skrócie, DWM dodaje dodatkową warstwę ochrony przed rozdarciem. Taki, który pozwoli dowolnej aplikacji działającej w systemie rysować z częstotliwością niezależnie od częstotliwości odświeżania wyświetlacza i nadal zapobiegać rozrywaniu. W takim systemie, w trybie okienkowym jedyne, co jest dobre dla VSYNC w OpenGL lub Direct3D, to w rzeczywistości ograniczenie wykorzystania procesora / GPU.

Właśnie dlatego stworzono adaptacyjną VSYNC, dlatego nie ma na celu karania aplikacji, które nie mogą utrzymać częstotliwości odświeżania wyświetlacza, poprzez zmuszanie ich do obniżenia współczynnika częstotliwości odświeżania (np. 60 Hz -> 30, 20, 15, 10, 12 , 6, 5, 4, 3, 2, 1), ale w celu ograniczenia aplikacji, które rysują szybciej niż monitor może wyświetlać obrazy z powodu nadmiernego zużycia mocy procesora / karty graficznej.

Andon M. Coleman
źródło
5

Po włączeniu Aero Menedżer okien pulpitu korzysta z podwójnego buforowania :

Funkcja Windows Aero szeroko wykorzystuje podwójne buforowanie do rysowania na ekranie.

Źródło

Wikipedia ma do powiedzenia na temat tego, jak jest to używane z synchronizacją pionową, aby zapobiec rozerwaniu ekranu:

Podczas okresu wygaszania w pionie sterownik nakazuje karcie wideo szybkie skopiowanie poza obszar ekranu grafiki do aktywnego obszaru wyświetlania (podwójne buforowanie) lub potraktowanie obu obszarów pamięci jako wyświetlalnych i po prostu przełączanie się między nimi (strona przerzucanie).

bwDraco
źródło
6
Podwójne buforowanie nie zapobiega rozerwaniu, uniemożliwia użytkownikowi zobaczenie rzeczy w trakcie renderowania. Jeśli jesteś podwójnie zbuforowany i przewracasz stronę w trakcie odświeżania ekranu, nadal łzy się pojawiają.
Wyzard
Oczywiście nadal możesz uzyskać łzawienie, jeśli źle zrobisz podwójne buforowanie, ale chodzi o to, że DB można użyć, aby zapobiec łzawieniu.
nitro2k01
3

Podwójne buforowanie + V-synchronizacja powoduje brak rozrywania. Aero używa tej konfiguracji.

DeepSpace101
źródło
2

DWM (technologia umożliwiająca efekt Aero) renderuje wszystko na ekranie jako powierzchnię D3D (co umożliwia odtwarzanie wideo na Flip). Ta technika renderowania automatycznie zapobiega rozerwaniu , chociaż metoda gry powinna być lepsza niż ogólna metoda DWM (w końcu to ich własny silnik). Prawdopodobnie więc metoda gry albo nie jest zbyt dobra, albo nie została zoptymalizowana pod kątem konfiguracji.

Martheen Cahya Paulo
źródło
2
Samo użycie Direct3D nie zapobiega rozdzieraniu ekranu. To podwójne buforowanie.
bwDraco