Issue #705

Feature #1539: Graphics acceleration

Incomplete EGL implementation

Added by Paul Kocialkowski over 3 years ago. Updated 6 days ago.

Status:New Start date:11/12/2013
Priority:Urgent Due date:
Assignee:- % Done:

0%

Category:Graphics
Target version:Replicant 6.0
Resolution: Device:

Description

Replicant is currently using the fallback Android EGL implementation, which is incomplete. The missing features of this implementation cause multiple issues:
  • Slowness issues on devices with slow CPUs
  • YUV is not properly supported (only black & white), which forces us to use RGB565 as a preview format on the camera modules. This causes several issues: * preview-based detection (such as barecodes, QR codes, etc) doesn't work * panorama feature is broken
  • Screenshots do not work
  • Previews of the windows in the tasks switcher are missing
  • Some applications rely on unimplemented features, such as Firefox, Document Viewer and crash as they are missing

We tried using Mesa as a replacement, both with swrast/softpipe and swrast/llvmpipe, but it is too slow to be usable.

History

Updated by Rodger Fox over 3 years ago

Since slowness is the problem with Mesa, is this bug solvable in a way besides using graphics hardware?

Or should the focus be on contributing to and integrating projects like Lima driver into Replicant?

Updated by Paul Kocialkowski over 3 years ago

It would be possible to complete the Android EGL implementation so that it is fully-featured and optimize it with NEON and ARM ASM code so that it becomes faster. There are also ways to improve things with hwcomposer and the framebuffer drivers and other per-hardware things.

But the real way to solve this is to have per-GPU free software implementations, such as Lima. Lima is not ready yet, but once it doesn't depend on the proprietary compiler and gets integrated in mesa, we'll certainly try and make it work with Replicant.

Updated by My Self over 2 years ago

IMHO the Lima development stagnated since the last post, or are there any insider news?

I really want to take screenshots and the app alternative AndroSS:
https://f-droid.org/repository/browse/?fdfilter=screenshot&fdid=net.tedstein.AndroSS
doesn't work, too. (It takes screenshots, but the pictures are broken; looking like colored barcode art).

Does anybody knows a workaround for the screenshot feature (on Replicant), please?

Updated by Paul Kocialkowski over 2 years ago

IMHO the Lima development stagnated since the last post, or are there any insider news?

Quote: the tamil driver will see work whenever/ifever i am in the mood for working on it again

Does anybody knows a workaround for the screenshot feature (on Replicant), please?

Well, screenshots work on the browser, so maybe we should look how it's done there. I don't have time to work on graphics acceleration, as usual.

Updated by My Self over 2 years ago

[I've removed the system browser, so I can't test that].

But I've found a functional workaround to make screenshots over ADB:
http://blog.shvetsov.com/2013/02/grab-android-screenshot-to-computer-via.html

Updated by Paul Kocialkowski over 2 years ago

  • Target version changed from 21 to Any version

Updated by My Self over 2 years ago

IMHO the <incomplete EGL implementation> is an acute security related problem and will become a bigger one in the future.
The reason is, that I don't see another chance to get a more secure browser to work on Replicant without OpenGL ES, at the moment.
Please have a look at the discussion here: http://redmine.replicant.us/boards/39/topics/8007

A working EGL will bring also the following benefit:
  • There would be a workaround for "Add support for more video software-decoding codecs, such as Theora" from the Tasks list, because with a working Firefox, I've successfully tested to run a .ogv (Theora) Video file out of the browser.
  • This video was also switchable to fullscreen, so this could be another workaround for "Make the embedded video player in the browser work (or make it switch to fullscreen when playback starts)" on the Tasks list.
  • You could delete "Write a modern Gallery application that doesn't rely on missing OpenGL features" from the Tasks list.
  • Of course that would delete the EGL point itself "Improve the generic Android EGL implementation so that it implements all the currently missing features" from the Tasks list.
  • The points above could be the some kind of workaround for "Make software video decoding work on Replicant 4.2" on the Tasks list, too.
  • And last but not least, it (probably!) could lead to less battery consumption (http://redmine.replicant.us/boards/9/topics/7953) because there would be less (battery draining) software rendering, (but I have to test that first).

Updated by Denis 'GNUtoo' Carikli over 1 year ago

  • Parent task set to #1521

Updated by Denis 'GNUtoo' Carikli over 1 year ago

  • Parent task changed from #1521 to #1491

Updated by Denis 'GNUtoo' Carikli over 1 year ago

  • Parent task changed from #1491 to #1539

Updated by Denis 'GNUtoo' Carikli over 1 year ago

  • Device set to Not device specific

Updated by Wolfgang Wiedmeyer 4 months ago

  • Device deleted (Not device specific)

Updated by Wolfgang Wiedmeyer about 1 month ago

  • Category set to Graphics
  • Priority changed from High to Urgent

Updated by Wolfgang Wiedmeyer 19 days ago

  • Assignee deleted (Paul Kocialkowski)

llvmpipe is available in Replicant 6.0 and can optionally be enabled. It is still too slow to be the default renderer.

llvmpipe can become fast enough if it is optimized for ARM. Looking at optimized code for architectures that are supported by llvmpipe could be a viable strategy to figure out the instructions that are worth to optimize (e.g. by implementing them in ARM assembly).

Making use of ARM NEON should improve speed as well.

Updated by Wolfgang Wiedmeyer 6 days ago

  • Target version changed from Any version to Replicant 6.0

Also available in: Atom PDF