Project

General

Profile

Graphics » History » Version 17

dl lud, 01/24/2020 03:14 AM
Introduction to the per process software renderer as used in Replicant 6.0 0004.

1 1 Wolfgang Wiedmeyer
h1. Graphics
2
3 17 dl lud
Replicant relies on the CPU for graphics rendering, a technique known as software rendering. Using the dedicated graphics processor (GPU) currently requires non-free software on all of the supported devices. As free-software replacements are not yet available, the GPU cannot be used with Replicant for the moment (see [[GraphicsResearch]]). The software rendering is the reason why Replicant devices appear slow at times and is responsible for a lot of crashes that can happen during usage.
4 11 Fil Bergamo
5 17 dl lud
Until [[Images#Replicant-60-0003-images|Replicant 6.0 0003]] Replicant used the [[GraphicsResearch#Android-software-renderer|Android software renderer]], also known as libagl. libagl is fast, but [[Graphics#Known-issues-with-libagl|caused several issues]] due to lack of OpenGL ES (GLES) 2.0 support.
6 1 Wolfgang Wiedmeyer
7 17 dl lud
As of "Replicant 6.0 0004 rc1":https://ftp.osuosl.org/pub/replicant/images/replicant-6.0/0004-rc1/, [[GraphicsResearch#Mesas-llvmpipe|llvmpipe]] is used as the default software renderer. llvmpipe has a more complete GLES implementation than libagl (see #705), so more apps work with it, like Firefox-based browsers or more recent WebViews (see #1780). Unfortunately, llvmpipe is too slow for certain system components, which may able be true for some apps. Furthermore, certain apps still crash with llvmpipe, although less frequentely. Usually, the screen stays black if an app does not work with llvmpipe.
8 16 doak complex
9 17 dl lud
To cater for these issues, Replicant 6.0 0004 includes a "mechanism that allows choosing between llvmpipe and ligagl, on a per process basis":https://lists.osuosl.org/pipermail/replicant/2019-August/002054.html. Such mechanism is "actually used":https://lists.osuosl.org/pipermail/replicant/2020-January/002421.html on the Replicant 6.0 0004 images to force some system components (bootanimation, SurfaceFlinger and system_server) to use libagl.
10 16 doak complex
11 17 dl lud
h2. Choosing the default software renderer
12
13 1 Wolfgang Wiedmeyer
Make sure [[ADB]] is running as root and the system partition [[ADB#Modifying-the-system-partition|is mounted writable]].
14
15 17 dl lud
The following command switches between llvmpipe and libagl:
16 1 Wolfgang Wiedmeyer
<pre>
17
adb shell "grep -q "ro.libagl=1" /system/build.prop && sed "s/ro.libagl=1/ro.libagl=0/" -i /system/build.prop || sed "s/ro.libagl=0/ro.libagl=1/" -i /system/build.prop" 
18
</pre>
19
20 17 dl lud
Then reboot the device. To switch back to previous renderer, run the above command again and reboot the device.
21
This method works on both Replicant 6.0 0003 and 0004. Do note that on 0003 you will start with libagl by default, whereas on 0004 the default is llvmpipe.
22 1 Wolfgang Wiedmeyer
23 17 dl lud
h2. Choosing the software renderer for a specific app
24
25
h2. Choosing the software renderer for a system component
26
27 16 doak complex
In case the screen compositor (SurfaceFlinger) is used with llvmpipe, this could have an effect to other apps. For instance with Gallery and Orbot it happens, that some GUI elements are visible, while the main screen is black. The GUI of Simple File Manager works as long as no image is viewed in fullscreen. 
28 2 Wolfgang Wiedmeyer
29 17 dl lud
h2. Known issues with libagl
30 1 Wolfgang Wiedmeyer
31 16 doak complex
* Selecting the third option besides photo and video (Panorama mode) will crash the Camera app.
32 14 doak complex
* Video playback in the browser does not work. (issue #1533)
33
* Screenshots do not work. (see [[Screenshots]] for a workaround)
34
* Selecting wallpapers from storage does not work.
35
* Screen content is sometimes shortly visible before unlocking. (issue #1275, happens with llvmpipe as well)
36
* Previews of the windows in the tasks switcher are missing.
37 16 doak complex
* Switching between apps, apps and the launcher or different views inside an app is sometimes slow and the device may seem unresponsive.
38 1 Wolfgang Wiedmeyer
* There are issues with using folders with the Trebuchet launcher. (issue #1790, happens with llvmpipe as well)
39
40 16 doak complex
h3. Popular apps from F-Droid that do not work
41 2 Wolfgang Wiedmeyer
42 16 doak complex
* All Firefox-based browsers like "IceCatMobile":https://f-droid.org/repository/browse/?fdfilter=icecat&fdid=org.gnu.icecat and Orfox
43
* "Document Viewer":https://f-droid.org/repository/browse/?fdfilter=document+viewer&fdid=org.sufficientlysecure.viewer
44
* "LibreOffice Viewer":https://f-droid.org/repository/browse/?fdfilter=libreoffice&fdid=org.documentfoundation.libreoffice
45
* "RedReader":https://f-droid.org/repository/browse/?fdfilter=redreader&fdid=org.quantumbadger.redreader cannot display images ("upstream bug":https://github.com/QuantumBadger/RedReader/issues/279)
46 8 Denis 'GNUtoo' Carikli
47
h2. See also
48 9 Denis 'GNUtoo' Carikli
49 17 dl lud
* There is a page about [[GraphicsResearch]] that gathers information to improve graphics support.