Project

General

Profile

Feature #1844

Feature #1539: Graphics acceleration

Select libagl/llvmpipe per app

Added by Jeremy Rand almost 2 years ago. Updated 3 days ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
Graphics
Target version:
Start date:
11/02/2017
Due date:
% Done:

100%

Estimated time:
Resolution:
Device:

Description

It would be useful to be able to select libagl or llvmpipe renderer on a per-app basis. This would allow apps that need llvmpipe to work, while apps that don't need llvmpipe can run faster with libagl.


Related issues

Blocks Replicant - Issue #1780: Update the webview apkNew03/15/2017

Actions
Blocks Replicant - Issue #1960: Build release candidate image for 6.0 0004New10/09/2019

Actions

History

#1

Updated by Jeremy Rand almost 2 years ago

Jookia and I have been tinkering around with this. Unfortunately https://redmine.replicant.us/issues/1843 has been a bit of a roadblock for this research.

#2

Updated by Jeremy Rand about 1 year ago

  • % Done changed from 0 to 10

Experimental branch at https://notabug.org/JeremyRand/frameworks_native (specifically the replicant-6.0-egl branch). I haven't verified whether it builds without errors. If anyone would like to build it and post binaries (if it doesn't error), that would be welcome. (Make sure you verify the OpenPGP signature on the tip of the branch, it should be signed by my key.)

#3

Updated by Kurtis Hanna about 1 year ago

  • Target version changed from Replicant 6.0 to Replicant 6.0 0004
#4

Updated by Jeremy Rand 8 months ago

Some notes about the patch I linked above:

Requires ro.zygote.disable_gl_preload to be set. You can check for this by typing the following in an adb shell:

getprop ro.zygote.disable_gl_preload

It should say "true".

You can create an EGL override by running the following in a root adb shell:

su -c "mkdir -m 770 /data/data/org.mozilla.fennec_fdroid/os_override" $(stat -c "%U" /data/data/org.mozilla.fennec_fdroid/)
su -c "ln -s /system/lib/egl/libGLES_mesa.so /data/data/org.mozilla.fennec_fdroid/os_override/libGLES_impl.so" $(stat -c "%U" /data/data/org.mozilla.fennec_fdroid/)

The above example enables llvmpipe for the app "org.mozilla.fennec_fdroid".

You can access debug output by grepping logcat for "libEGL".

Docs for old patch by Jookia, which may still be useful: https://lists.osuosl.org/pipermail/replicant/Week-of-Mon-20171204/001457.html

#5

Updated by Denis 'GNUtoo' Carikli 5 months ago

  • Status changed from New to Feedback
#6

Updated by Denis 'GNUtoo' Carikli 5 months ago

In order to be integrated in the next Replicant release (0004), the patches have to be sent on the mailing list so we could collectively review them.

Thanks a lot for working on that.

#7

Updated by Jeremy Rand 4 months ago

Newest patches are by adj (on top of earlier patches by Jookia and me), in these two repos:

#8

Updated by Kurtis Hanna 4 months ago

  • Parent task set to #1539
#10

Updated by Kurtis Hanna about 2 months ago

adjtm recently sent a set of 8 patches to the mailing list for review that, if ACKed, I believe will allow us to close this ticket: https://lists.osuosl.org/pipermail/replicant/2019-August/002054.html

#11

Updated by Kurtis Hanna about 2 months ago

#12

Updated by Andrés D about 2 months ago

  • Assignee set to Andrés D
#13

Updated by Kurtis Hanna 29 days ago

A review of this patch set in the #replicant irc pointed out that this patch removes the ability to set libagl as the default renderer.

"Previously, you could switch between libagl and llvmpipe as the default, and this would apply to any app that didn't have an override set; this was a useful feature. Am I reading the patch correctly? If so, can that functionality be restored? (One way to do it would be to access() an extra file that's not a function of the app name, so that that extra file can control the default renderer if the app-specific override isn't set)

Actually it's simpler than that. No need to deal with an extra access() if you don't want to. Just revert the final 2-line diff in the 2nd commit (the part that includes the log no EGL override found, default libGLES_mesa.so). Then the standard method of choosing the default that's covered in the wiki should work.

That said, if you want to access() an extra file, that would be an improvement over the previous behavior, since the previous behavior required doing a weird sed trick on the system partition to choose the default renderer, and touching a file (potentially on the data partition) is a lot better UX. So by all means feel free to use access(); it would be better."

#14

Updated by Kurtis Hanna 7 days ago

  • Related to Issue #1960: Build release candidate image for 6.0 0004 added
#15

Updated by Kurtis Hanna 7 days ago

  • Related to deleted (Issue #1960: Build release candidate image for 6.0 0004)
#16

Updated by Kurtis Hanna 7 days ago

  • Blocked by Issue #1960: Build release candidate image for 6.0 0004 added
#17

Updated by Kurtis Hanna 7 days ago

  • Blocked by deleted (Issue #1960: Build release candidate image for 6.0 0004)
#18

Updated by Kurtis Hanna 7 days ago

  • Blocked by Issue #1960: Build release candidate image for 6.0 0004 added
#19

Updated by Kurtis Hanna 7 days ago

  • Blocked by deleted (Issue #1960: Build release candidate image for 6.0 0004)
#20

Updated by Kurtis Hanna 7 days ago

  • Blocks Issue #1960: Build release candidate image for 6.0 0004 added
#21

Updated by Kurtis Hanna 7 days ago

  • % Done changed from 10 to 80
#22

Updated by Joonas Kylmälä 3 days ago

  • Status changed from Feedback to Resolved
  • % Done changed from 80 to 100

The patches have been pushed.

Also available in: Atom PDF