W ciągu kilku ostatnich tygodni, Alexander von Gluck aka kallisti5, dokonał dużego postępu w portowaniu nowej Mesy 3D do Haiku. Przez ten okres czasu opracował serię patchy które dodano do kodu źródłowego Mesy 3D i niemalże zakończył trzy etapy z pięciu, które są niezbędne do ukończenia bounty. Sama aktualizacja Mesy jest już gotowa w 99% i są wymagane jedynie poprawki i testy.
Z racji tego, że Haiku w wersji R1 ma być zgodny binarnie z BeOSem w wersji R5, Haiku występuje w dwóch wersjach. Oficjalne Haiku jest kompilowane za pomocą GCC 2 i nosi nazwę gcc2h( h oznacza hybrid czyli, że zawiera biblioteki GCC 4 dzięki którym działają aplikacje skompilowane w GCC 4 - a takie wymagania/zależności ma większość dzisiejszego oprogramowania i portów). Druga wersja jest nieoficjalna( dostarczana przez developerów Haiku), z której korzysta większość użytkowników, to gcc4h, czyli jest kompilowana za pomocą czwartego GCC i posiada biblioteki z wersji GCC 2. Istnieją też "standardowe", mało istotne wersje z bibliotekami jednego rodzaju( gcc2 bądź gcc4). Haiku R1 będzie właśnie posiadać dwa API. Jedno dla starych, BeOSowych aplikacji( GCC 2) i drugie dla nowych( GCC 4). Dlaczego tak jest? Po bankructwie Be Inc. i upadku BeOSa( firmę wykupił Palm i źródła stały się jego własnością intelektualną - później wchłonięte przez ACCESS Co. i jedynie uwolniono kody źródłowe paru aplikacji systemowych, jeszcze za nieboszczki Be Inc. np. OpenTracker) zaprzestano rozwijania aplikacji dla BeOSa i w większości przypadków nie uwolniono programów na zasadach open source. Następnie twórcy kompilatora GCC wprowadzili w nim zmiany, które doprowadziły do zerwania wstecznej kompatybilności. Aplikacje dla Haiku które posiadają API napisane w C++, muszą być na nowo kompilowane z poprawkami w kodach źródłowych. Problemu by nie było, gdyby programy dla BeOSa były rozwijane na bieżąco. Wtedy twórcy systemu i aplikacji dla niego, mogliby drogą ewolucji łagodnie przystosowywać system pod nowsze wersje GCC.
API i ABI GCC 4 w pierwszym Haiku nie będzie w przyszłości rozwijane, tzn. programy w nim skompilowane dla Haiku R1 nie będą kompatybilne z wersją Haiku R2. Wersja R2 będzie posiadać zamrożone API GCC 2 i nowe GCC 4, jednocześnie developerzy nie planują wrzucać do następcy obsługi API GCC 4 z wersji R1 - nie chcą mnożyć API w następcy. Z powyższych powodów wersja gcc4h Haiku nie jest tą oficjalną(może to ulegnie zmianie w przyszłości pod wpływem różnych czynników) ale nic nie stoi na przeszkodzie by z niej korzystać tak jak to robi większość użytkowników, którzy chcą korzystać z aplikacji skompilowanych w GCC 4 - niektóre porty nie chcą poprawnie działać w wersji gcc2h, gdzie przykładowo media_server jest również w GCC 2, tak jak całe bebechy systemu.
Dla Haiku w wersji gcc2h będzie dostępna tylko Mesa 7.8.2. Mesa 8.0 i jej kolejne wersje, będą tylko w wersji gcc4h Haiku, gdyż w kolejnych rewizjach Mesy zaimplementowano GLSL i twórcy Haiku chcąc udostępnić nowsze wydania Mesy dla starego API, musieliby utrzymywać fork - co byłoby bardzo pracochłonne i wymagało więcej niż jednego developera, który tym się teraz zajmuje w Haiku. Kod C++ GLSL nie jest przyjazny dla kompilatora GCC2. Alexander jest bardzo zadowolony z tego, że jego patche zostały dodane do kodu źródłowego Mesy i wersja 8.0 buduje się w Haiku tylko z niewielką pomocą z jego strony. Budowania Mesy w Haiku polega na zdalnym pobraniu z serwera Opcjonalnego Pakietu Mesa 3D i użycia różnych plików binarnych i nagłówkowych do utworzenia libGL( za pomocą Haiku OpenGL Kit). W tej chwili projekt Haiku utrzymuje swój własny fork biblioteki GLUT która to nie jest już aktywnie rozwijana przez zespół Mesy. GLUT był i jest bardzo ważny dla świata BeOSa i Haiku, dlatego jest nadal sens w utrzymywaniu własnego rozwidlenia kodu. Możliwe, że w przyszłości GLUT zostanie zastąpiony w Haiku przez którąś z jego alternatywnych implementacji np. Freeglut. GLUT został przeniesiony z src/lib/mesa/glut do src/lib/glut a pliki z src/lib/mesa zostały usunięte. Teraz w Haiku wróciliśmy do punkty wyjścia, ale z nowym OpenGL Kit bazującym na bibliotece Mesa 3D i programowym renderowaniem, oraz otwartą drogą do akceleracji sprzętowej.
Nie obyło się też bez błędów. Na przykład demo GLTeapot ma drobne problemy z wyświetlaniem, może być to spowodowane przestarzałym kodem GLTeapot lub jakimś błędem w programowym renderze. W demie Haiku3d obracające się litery pozostawiają za sobą ślad, problem prawdopodobnie jest związany z przestrzenią kolorów bo występuje jedynie u użytkowników mających ustawione 32 bity głębi w systemie. Także w tej chwili jest pojedynczy bufor, podwójny na obecną chwilę wiesza aplikacje GL. Prawdopodobnie pojedynczy bufor powoduje to, że w GLTeapot czajnik miga gdy się umieści nad nim kursor.

GLTeapot na przeciętnym obecnie sprzęcie działa w Haiku z prędkością 300-400 FPS( software render), a gdy Haiku jest wirtualizowane za pomocą Qemu, to wynosi to około 16 FPS. GLTeapot działał na jego komputerze przez wiele dni i nie zaobserwował on żadnych wycieków pamięci.
Teraz pozostaje nam jedynie czekać na sterowniki i sprzętową akcelerację.
kallisti5 dziękuje wszystkim za wsparcie, komentarze i wpłaty na bounty. Przede wszystkim dziękuje zespołowi Mesa 3D za bezproblemową współpracę.
Wywiad z Alexandrem znajdziecie w naszych artykułach.
Ostatnie odpowiedzi
10 godzin 29 min. temu
12 godzin 4 min. temu
1 dzień 4 godziny temu
1 dzień 13 godzin temu
1 dzień 16 godzin temu
2 dni 5 godzin temu
3 dni 20 godzin temu
4 dni 3 godziny temu
4 dni 4 godziny temu
4 dni 4 godziny temu