Feature #1844
closedFeature #1539: Graphics acceleration
Select libagl/llvmpipe per app
100%
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
Updated by Jeremy Rand almost 7 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.
Updated by Jeremy Rand about 6 years 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.)
Updated by Kurtis Hanna about 6 years ago
- Target version changed from Replicant 6.0 to Replicant 6.0 0004
Updated by Jeremy Rand over 5 years 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
Updated by Denis 'GNUtoo' Carikli over 5 years ago
- Status changed from New to Feedback
Updated by Denis 'GNUtoo' Carikli over 5 years 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.
Updated by Jeremy Rand over 5 years ago
Newest patches are by adj (on top of earlier patches by Jookia and me), in these two repos:
Updated by Kurtis Hanna over 5 years ago
I think that these are the patches that adjtm put on top of Jookia and Jeremey's patches for this:
https://github.com/andresdju/vendor_replicant/commit/19fe4dddff99ba0a12b4ff2545df65562170847b.patch
https://github.com/andresdju/vendor_replicant/commit/bd2bb9899f5ea117669912457c0fdead1bef9166.patch
https://github.com/andresdju/frameworks_native/commit/55119b231e8609f0dd45b76ce2b1e6d750b97030.patch
https://github.com/andresdju/frameworks_native/commit/9a22684afe2f6bfaf732f086527b8fb453e7aaaf.patch
Updated by Kurtis Hanna about 5 years 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
Updated by Kurtis Hanna about 5 years ago
- Blocks Issue #1780: Update the webview apk added
Updated by Kurtis Hanna about 5 years 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."
Updated by Kurtis Hanna about 5 years ago
- Related to Issue #1960: Build release candidate image for 6.0 0004 added
Updated by Kurtis Hanna about 5 years ago
- Related to deleted (Issue #1960: Build release candidate image for 6.0 0004)
Updated by Kurtis Hanna about 5 years ago
- Blocked by Issue #1960: Build release candidate image for 6.0 0004 added
Updated by Kurtis Hanna about 5 years ago
- Blocked by deleted (Issue #1960: Build release candidate image for 6.0 0004)
Updated by Kurtis Hanna about 5 years ago
- Blocked by Issue #1960: Build release candidate image for 6.0 0004 added
Updated by Kurtis Hanna about 5 years ago
- Blocked by deleted (Issue #1960: Build release candidate image for 6.0 0004)
Updated by Kurtis Hanna about 5 years ago
- Blocks Issue #1960: Build release candidate image for 6.0 0004 added
Updated by Joonas Kylmälä almost 5 years ago
- Status changed from Feedback to Resolved
- % Done changed from 80 to 100
The patches have been pushed.