[Replicant] [PATCH 0/1] EGL Loader patch to use both LLVMpipe and libagl at once

Jookia 166291 at gmail.com
Tue Jan 16 18:35:31 UTC 2018


On Tue, Jan 16, 2018 at 05:52:18PM +0000, Jeremy Rand wrote:
> Jeremy Rand:
> >>  From: "Jookia" <166291 at gmail.com>
> >> Sent: Monday, December 4, 2017 5:04 PM
> >> To: replicant at osuosl.org
> >> Subject: [Replicant] [PATCH 0/1] EGL Loader patch to use both LLVMpipe and 
> >> libagl at once   
> >> Hey Replicant!
> >>
> >> There's been an issue of having llvmpipe be too slow, so I cooked up a 
> >> patch
> >> to allow people to use both LLVMpipe and libagl at the same time.
> >> The patch follows and includes a large amount of documentation in the 
> >> code.
> >> Apply it to frameworks/native.
> > 
> > I've tested Jookia's prebuilt binary patch on my spare Galaxy S3 i9300,
> > and it works as advertised.
> Hmm, I *might* have spoken too soon, or I might just be doing something
> stupid.  I set Orfox to use llvmpipe, which worked fine.  I then set
> Orbot to use llvmpipe, and for some reason that override never seemed to
> trigger.  Nothing relevant shows up in logcat, and based on the
> appearance of Orbot, it doesn't look like it's using llvmpipe.  (Usually
> llvmpipe causes Orbot to show a black screen.)
> 
> Can anyone else reproduce this behavior?
> -- 
> -Jeremy Rand

It seems that a large amoount of applications don't load libEGL, at least not
using the traditional loader which chooses between llvmpipe or libagl.
I missed this as I wasn't testing applications that were known to work.

Android allows developers to disable hardware acceleration in applications:
https://developer.android.com/guide/topics/graphics/hardware-accel.html

Perhaps it has something to do with hardware acceleration being explicitly
disabled in these applications? Orbot disables it explicitly:
https://gitweb.torproject.org/orbot.git/tree/app/src/main/AndroidManifest.xml

However, Amaze doesn't disable it:
https://github.com/TeamAmaze/AmazeFileManager/blob/master/app/src/main/AndroidManifest.xml
and its SDK properties suggest it would be enabled by default:
https://github.com/TeamAmaze/AmazeFileManager/blob/master/app/build.gradle
Nor does a grep for FLAG_HARDWARE_ACCELERATED or LAYER_TYPE_SOFTWARE succeed.
Yet it doesn't call libEGL either? Perhaps it uses its drawing code?

I don't know much about Android's architecture so without digging in to the
pipeline I'm not sure what's going on here.

Jookia.


More information about the Replicant mailing list