Zink i Turnip jako uzupełnienie Linuksa na Androidzie
Projekt Termux o ile skupia się na możliwie dużej kompatybilności w celu uruchamiania aplikacji Linuksowych na Androidzie, ma dość dużą wadę, która od lat jest trudna do ogarnięcia, a mianowicie brak OpenGL. A dokładniej chodzi o akcelerację 3D (bo OpenGL nie wymaga akceleracji, można odpalić rendering na procesorze XD).
Jest to problem, który spędza sen z powiek pewnie 5 osobom. Pozostałym brak Wine i multiliba, ale nad tym też są prace ;)
Gdyż powiedzmy wprost - Smartfony są coraz wydajniejsze i zazwyczaj tańsze od zwykłych komputerów. A jeśli ktoś nie wymaga za dużo od komputera to coraz lepiej wygląda opcja z wykorzystaniem smartfona.
Jest jednak opcja uruchomienia OpenGL na Termux (i stąd droga do Linuksa). Nie jest to może najlepsza opcja na świecie - czyli po prostu natywne korzystanie z OpenGL, ale mimo to da się coś już z tym zrobić. Można też czekać na faktyczne wsparcie OpenGL ES, ale nie wiem czy coś się dzieje w tej materii.
Turnip
Turnip jak rozumiem jest sterownikiem Linuksowym / Androidowym, który pozwala na dostęp do karty graficznej bez wykorzystania Roota. Niestety za wiele nie można się o tym dowiedzieć. Dzięki czemu Termux może odwołać się do urządzenia i korzystać z niego na ile to możliwe.
Zink
Zink to konwerter kodu Vulkan na OpenGL. Jest o tyle ciekawy, że potrafi wydajnością zmasakrować OpenGLa Nvidii. Czyli w skrócie jest tak (lub może być), że gra uruchomiona na Zinku będzie działać lepiej niż na OpenGL dostarczanym przez Nvidię na ich własnych kartach.
I co to nam daje?
No więc mamy w Termux akcelerację 3D dzięki dostępowi do sprzętu + konwersji Vulkan na OpenGL. Niestety z powodu tego, iż nowe wersje Zinka wymagają specjalnych rozszerzeń Vulkana, których nie mamy w smartfonach, musimy korzystać z wersji ciągle aktualnej, ale starzejącej się 22.0.0. A to sprawia, że błędów w Zinku, które zostały wyeliminowane, nie dostaniemy ;(
Oczywiście fajnie by było jeśli się uda ogarnąć OpenGLa na Termux bez takich metod. Jest pewna koncepcja z wykorzystaniem virglrenderer, ale opiszę ją w przyszłości, chociaż wolałbym ją przetestować.
https://github.com/ThieuMinh26/Proot-Setup/blob/main/Zink