Tags Posts tagged with "sync-to-vblank"

sync-to-vblank

przez -
1 367
X.Org

Ostatnimi czasy otwarte sterowniki Nouveau, jakby przyspieszyły w rozwoju, jeżeli chodzi o liczbę dodawanych funkcji. Nie tak dawno Francisco Jerez dodał do drzewa Git zawierającego kod sterownika xf86-video-nouveau wsparcie dla DRI2 page-flipping i sync-to-vblank.

KMS page-flipping był już dostępny od jakiegoś czasu w jądrze Linux 2.6.32 z DRI2 w postaci page-flipping ioctl. Wykorzystywały go sterowniki ATI oraz Intela, jak również X.Org Server i Wayland. Od teraz również projekt Nouveau może korzystać z dobrodziejstw w postaci zwiększonej wydajności.

Co takiego robi page-flipping?

Page-flipping polega na tym, że ramka rysowana jest zawsze w pamięci, która nie jest wyświetlana na ekranie – gdy wyświetlana jest poprzednia stabilna ramka.

Jak już się cały obraz narysuje, podmienia się go na wyświetlany. Podmienianie zajmuje bardzo mało czasu – jest to zazwyczaj wskazanie karcie,  że ma pokazywać inny obszar pamięci (tzw. flip), albo obraz jest wkopiowywany na ten wyswietlany (blit) – wkopiowywanie i tak trwa dużo krócej niż rysowanie.

Drugą ważną zmianą jest wsparcie dla sync-to-vblank. Pozwala to zredukować tzw. tearing.

W ten sposób unika się widzenia, jak obraz jest rysowany. Trik polega na tym, żeby podmiany jednego obrazu na drugi dokonać w tzw. Vertical blank (vblank). W starych monitorach jest to czas, w którym strumień elektronu wraca po narysowaniu całego obrazu w pozycję wyjściową do rysowania kolejnego. Ogólnie jest to czas, w którym monitor nie aktualizuje niczego na obrazie i cokolwiek zrobimy z obrazem, będzie to niewidoczne – tzn widoczne dopiero przy wyświetlaniu kolejnego obrazu. Oczywiście, to co robimy (czyli flip lub blit) musi być dokładnie zsynchronizowane z momentem vblank i trwać krócej niż koniec vblank. Jeżeli tak nie jest – obserwujemy efekty typu tearing – widać część starego i nowego obrazu naraz.

Jak widzimy jest to bardzo ważna cecha, szczególnie jeżeli chodzi o sceny 3D. Jednakże, aby móc wykorzystać nowe zdolności, potrzebujemy relatywnie nowego jądra, gdzie to jest wspierane. Trzeba pamiętać o dodaniu opcji GLXVBlank do pliku xorg.conf, w celu aktywowania klienta synchronizacji GLX do VBlank, który wyeliminuje nam tearing.

Polecane

Prasa, Czasopismo

1 823
Ukazało się Linux Magazine – numer 161. Lipcowe wydanie magazynu zawiera analizę tworzenia bardziej czytelnych wyrażeń regularnych z Simple Regex Language, instrukcje zabezpieczania i...