OpenGL w Termux

in #polish2 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


You can read this text in the original on the Blurt platform.

Sort:  

You've got a free upvote from witness fuli.
Peace & Love!