[#10]
Re: Sterowniki OpenPCI dla kart graficznych Radeon
Witam,
jak już napisałem na
amigaworld.net sterownik Radeon.card dla openpci to program, którego kluczowe elementy to wierne kopie kodu wzięte ze sterownika Radeon.card Elboksu. Skopiowane zostało ponad 90% z tej części kodu naszego drivera, która służy do obsługi sterowania kartą Radeon, w tym cała inicjalizacja chipsetów oraz implementacja poszczególnych funkcji blittera karty graficznej. W przypadku niektórych funkcji "autorzy" sterownika openpci zadali sobie trochę trudu aby skopiowane 1:1 podprogramy umieścić w kodzie w innej kolejności i wywoływać w sekwencji właściwej, ale w przypadku bardziej skomplikowanych funkcji skopiowali je w całości bez zmiany choćby jednego bajtu. Te skopiowane w całości funkcje, to nie funkcje po kilka, czy kilkadziesiąt, ale po kilkaset następujących po sobie rozkazów. Najdłuższy z takich bloków kodu liczy ponad 600 rozkazów procesora - prawie 2 kilobajty kodu skopiowane bajt w bajt.
Jedyna istotna zmiana w kodach funkcji blittera wziętych z naszego sterownika to usunięcie z każdej z nich tego fragmentu kodu, który służy do obsługi Mediatorów do A1200 w trybie NO_MMU.
Przygotowanie obsługi kart Radeon zajęło nam kilka miesięcy. Musieliśmy rozwiązać wiele problemów jakie stwarzały chipsety tych kart w klasycznej Amidze. Ich rozwikłanie bez skrupulatnej analizy timingów tych kart w dzisiątkach testów i eksperymentów nie byłoby w ogóle możliwe.
Skopiowanie rezultatów naszej pracy i przedstawienie jako własnego software'u jest naszym zdaniem skrajnie nieuczciwe, a obecność w kodzie drivera Radeon.card dla openpci olbrzymich fragmentów kodu skopiowanego bajt w bajt z naszego komercyjnego oprogramowania czyni sterownik dla openpci oprogramowaniem nielegalnym.
Jeśli ktoś chciał skorzystać z rezultatów naszej pracy, to powinien był postarać się o uzyskanie od nas odpowiedniej licencji. Oczywiście, że nie byłaby ona bezpłatna, ale byłoby chyba kompletnie nielogiczne gdyby software, który przygotowujemy dla użytkowników naszych produktów rozdawać za darmo użytkownikom tych rozwiązań PCI, których producenci swych wyrobów nie supportują.
Darek Śmietana
PS.1. Nieznacznie większa prędkość sterownika openpci w niektórych testach robionych za pomocą P96speed to wynik usunięcia z kodu funkcji naszego sterownika sprawdzania czy kod będzie wykonywał się na A3/4000 (lub 1200 w trybie MMU) czy na A1200 w trybie NO_MMU.
PS.2. Nasz sterownik Radeon.card (do wersji 2.17) nie obsługuje sprzętowej akceleracji dla funkcji Draw(). Funkcja ta jest realizowana software'owo. W sterowniku (2.12 z 2010 roku) znajduje się kod do sprzętowej akceleracji tej funkcji, ale nie jest on wywoływany ponieważ fragment kodu dla Mediatorów 1200 pracujacych w trybie NO_MMU nie był jeszcze gotowy. Funkcja ta nie była dla nas priorytetowa ponieważ system OS3.x nie korzysta z niej, jest przydatna tylko w grach i testach.