OpenGL w Termux

in polish •  2 years ago 

Mieliśmy już informacje o Zinku (chociaż warto byłoby to poprawić). Pojawiła się jeszcze jedna opcja - z wykorzystaniem natywnego OpenGLES z Androida, co działa "meh". Ale warto powiedzieć, bo to w mojej opinii jedyna pewna metoda.

Zink

Zink za sprawą zmian przestał działać z Termuksem. Czyli albo używamy starej wersji Mesy (która działa, ale nie jest rozwijana, więc błędy nie są łatane itd), albo wcześniej powinniśmy używać llvmpipe (renderowanie grafiki na procesorze), co nie jest dobrym wyjściem, ale nie tragicznym :D Sporo pracy zostało włożone w rozwój software renderingu w przypadku gdy z jakiegoś powodu nie można użyć GPU.

Nie wiadomo co robić dalej z Zink. Przydałaby się oficjalna pomoc z projektu Mesa, ale nie ma chętnych. Twórca Kopper (czyli funkcji, która przy okazji zepsuła Zinka dla Termux) stwierdził, że nie zajmuje się Androidem.

Virglrenderer-android

W sumie to pewien hack, jeśli można tak powiedzieć. Super ekspertem nie jestem, ale myślę, że wiem jak to działa (ogólnie).

Otóż jest projekt virgl, który służyć ma docelowo do uruchamiania akceleracji 3D w maszynach wirtualnych. Częściowo takie rozwiązania miał Virtualbox czy VMware, ale chyba nie było żadnej opcji dla KVMa, czyli jednak mocno rozwijającego się wirtualizatora.

Pomiędzy gospodarzem, a gościem powstaje "most graficzny". Maszyna wirtualna odwołuje się (za pomocą virgl) do gospodarza, który renderuje grafikę i zwraca wyniki, które są składane i wyświetlane.

I podobnie działa to w Termux, ale "gościem" jest OpenGLES Androidowy, a gospodarzem Termux.

Powinno to sprawiać (w porównaniu do Zinka) znacznie większą kompatybilność, gdyż nawet gównosprzęt z Unisoc będzie dawał OpenGLa. Ale kosztem wydajności, gdyż obraz musi być przetransportowany, nawet wewnątrz lokalnego sprzętu.

Tutaj benchmarki, które wykonałem + porównania do realnego sprzętu. Benchmark wykonywałem za pomocą glmark2, ale niestety w różnych wersjach, bo nie wszędzie idzie dostać tą samą.

  • RX5500M: 2406 ???????
  • Vega 10: 4554
  • Intel N2840 iGPU: 132
  • Intel Xe Graphics TGL GT2 (i5-11320H) - 3783

  • Android: 188
  • LLVMPipe: 65
  • Virglrenderer GL - 85
  • Virglrenderer GLES - 72
  • Zink 22.0.5 GL - 199
  • Zink 22.0.5 + GL4ES - Crash ;<

W teorii Zink pokonuje (i Android) wydajnością super energooszczędnego celerona z 2015 roku). Niby słabo, ale z drugiej strony gry Open Source są opóźnione technologicznie, więc to nie jest zła wydajność.

Natomiast Virglrenderer uzyskał wynik niewiele wyższy od LLVMPipe, czyli renderowania na procesorze. Dość słabo, ale też lepiej renderować na grafice i zostawić procka w spokoju jak się da.

Oczywiście może technologia będzie ulepszana, chociaż bardziej podejrzewam rozwój virgl i jakieś sztuczki. "Modlę się" o Zinka, bo to faktycznie dość spory killer, skoro pokonuje wydajnością Androidowego OpenGLESa, który był przygotowywany przez twórców układu, czyli Qualcomm. Ale podobnie z Nvidią jest :D

Zobaczymy co będzie się działo ;) Ale powoli klocki są składane i może fajne wpisy powstaną na jakieś dobreprogramy z linkami do Blurta.


Posted from https://blurtlatam.intinte.org

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!
Sort Order:  
  ·  2 years ago  ·  

virgl jest spoko, ale obecnie nie działa idealnie. Od kilku dni walczę aby odpalić AGL na qemu z akceleracją w virgl. Cały czas jest tam dość sporo błędów ale idea piękna jak zresztą też np. virtio - w sumie już prawie wszystko da się tak odpalić. Za jakiś czas może na telefonach będzie system operacyjny host, który będzie gościł androida. Wtedy problem aktualizacji znika na zawsze, a zmiana systemu to wrzucenie innego obrazu bez modyfikowania jądra.


Posted from https://blurtlatam.intinte.org

  ·  2 years ago  ·  

Da się to zrobić już teraz o czym mówisz (a dokładniej można uruchomić Androida na Androidzie XD). Natomiast warto też zobaczyć Project Treble, co pozwala wrzucać nowsze systemy bez modyfikacji jądra


Posted from https://blurtlatam.intinte.org

  ·  2 years ago  ·  

Tyle, że Treble to inna warstwa. Po prostu zostaje partycja vendorowa, a inne są podmieniane. KVM i Virtio teoretycznie pozwala na uruchomienie nawet 10 systemów równocześnie. O tyle może być to fajne, że można by mieć osobny system na dane prywatne, a inny na służbowe. Wyłączać służbowy profil gdy się jest na wakacjach itd. Obecne procki spokojnie by to ogarnęły.

  ·  2 years ago  ·  

Jest już coś takiego, ale close source. Jakiś chiński projekt, który konteneryzuje Androida i uruchamia go na Androidzie, fork Anbox. Niestety nazwy nie pamiętam.

Procesory by dały radę, ale Android nie obsługuje KVM (domyślnie), więc albo konteneryzacja albo nic ...

Natomiast cóż - masz rację, że to by było spoko


Posted from https://blurtlatam.intinte.org