Podwójne buforowanie na ATI Radeon z użyciem XBIOSu

Poniżej jest video nagrane z komputera Atari Falcon z akceleratorem CT60, CTPCI (mostek PCI) i kartą ATI Radeon 7000. Krótkie, interaktywne demo prezentuje nowe, akcelerowane sprzętowo funkcje XBIOSu. Głównie wypełnianie/kopiowanie bloków pamięci, operacje logiczne na blokach (jest 16 dostępnych rodzajów operacji) z podwójnym buforowaniem ekranu (w celu uniknięcia migotania animacji, po raz pierwszy na Atari z Radeonem ;> ). Nowa robocza wersja sterowników została udostępniona grzecznościowo przez ich autora, Didera Mequignon’a.
Technikalia: prezentowana rozdzielczość to 640x480x32bity@75hz (to tylko przykładowa rozdzielczość, może być ustawiona na każdą wspieraną przez kartę), CPU Motorola mc68060 rev. 6 (@90mhz). W trakcie jednej ramki ekran logiczny jest wypełniany na czarno, z bufora w video ramie kopiowany jest uprzednio załadowany obrazek png, rysowana jest czerwona linia na zmiennej wysokości, zapalany jest piksel na środku ekranu, następnie kopiowany jest fragment bufora ekranu z pamięci video karty graficznej i wstawiany z zadaną operacją logiczną do bufora docelowego. Operacje logiczne wstawiania bitmap do bufora ramki mogą być interaktywnie zmieniane za pomocą klawiszy B(dla tła) i T(dla loga). Dodatkowo HELP zrzuca informacje na temat dostępnych trybów graficznych do pliku tekstowego (jest ich dużo, więc operacja może trochę potrwać). Ilość ramek na sekundę utrzymuje się na poziomie 66-75, więc nie jest źle. Spróbujcie uzyskać taki framerate na VIDEL’u ;).

ATI Radeon double buffering with Atari XBIOS demo from nokturnal on Vimeo.

Wspomagane sprzętowo funkcje XBIOS, użyte w demie nie są dostępne w ostatniej wersji sterowników Radeona (z grudnia 2010), pojawią się dopiero w następnej, oficjalnej wersji.
Trzeba także wspomnieć, że ostatnia wersja sterowników nie posiada poprawnie zaimplementowanej funkcji Vsync()(synchronizacja pionowa) dla kart ATI Radeon co uniemożliwia zaprogramowanie podwójnego buforowania. Obecnie kopiowanie pamięci z szyny lokalnej do CTPCI jest wolne, ma być dodany tryb BURST dla komunikacji SDRAM->CTPCI (tak, tylko w jedną stronę), ale wymaga to poprawy firmware’u CTPCI i też nie wiadomo jakiego rzędu wielkości uzyskamy przyśpieszenie. Dla porównania powiem, że gdy zaczniemy operować na pamięci Radeona z użyciem jednostki centralnej to wystarczy tylko wypełnienie ekranu na czarno i jednej poziomej linii i to już wystarczy, żeby otrzymać slajdy ;-).
Na pewno brakuje jeszcze trochę funkcji, ale na pewno się to jeszcze zmieni.

Tutaj załączam pełen kod źródłowy oraz plik binarny z prezentowanym wyżej programem i przykładami użycia nowych funkcji. Bardziej szczegółowy opis pojawi się wkrótce.


O wpisie