Graphics » History » Revision 16

Revision 15 (doak complex, 01/23/2020 08:31 PM) → Revision 16/45 (doak complex, 01/24/2020 12:25 AM)

h1. Graphics 

 By default, Replicant _Replicant_ devices use the Android _Android software renderer, renderer_, which relies on the CPU for graphics 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 _Replicant_ for the moment (see [[GraphicsResearch]]). The software rendering is the reason why Replicant _Replicant_ devices appear slow at times and is responsible for a lot of crashes that can happen during usage. 

 llvmpipe _llvmpipe_ has more complete EGL support than the Android _Android software renderer renderer_ (see #705), so more apps work with it, like Firefox-based _Firefox_-based browsers or more recent webviews _webviews_ (see #1780). Unfortunately, llvmpipe _llvmpipe_ is still too slow to be the default renderer, but it is possible to switch back and forth between llvmpipe _llvmpipe_ and the Android _Android software renderer. renderer_. 

 h2. Enabling llvmpipe _llvmpipe_ as software renderer 

 TODO: The following enables it globally. Add information about scripts to switch only "non-system"-components (SurfaceFlinger, bootanimation, system server (_SurfaceFlinger_, _bootanimation_, _system server_ ?) to llvmpipe. _llvmpipe_. 
 TODO: Also add information which files are used for this (@/etc/libGLES_android@ and other files within @/data/data/<app>@). Refer to "this mail": 

 Make sure [[ADB]] is running as root and the system partition [[ADB#Modifying-the-system-partition|is mounted writable]]. 

 The following command switches the software renderer implementation: 
 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"  

 Then reboot the device. llvmpipe _llvmpipe_ should now be enabled. To switch back to the default Android _Android software renderer, renderer_, run the above command again and reboot the device. 

 There are also issues with certain apps when using llvmpipe, _llvmpipe_, although crashes should be less frequent. Usually, the screen stays black if an app does not work with llvmpipe. _llvmpipe_. 
 In case the screen compositor (SurfaceFlinger) (_SurfaceFlinger_) is used with llvmpipe, _llvmpipe_, this could have an effect to other apps. For instance with Gallery _Gallery_ and Orbot _Orbot_ it happens, that some GUI elements are visible, while the main screen is black. The GUI of Simple _Simple File Manager Manager_ works as long as no image is viewed in fullscreen.  

 h2. Known issues with the Android _Android software renderer renderer_ 

 * Selecting the third option besides photo and video (Panorama mode) (_Panorama mode_) will crash the Camera _Camera_ app. 
 * Video playback in the browser does not work. (issue #1533) 
 * Screenshots do not work. (see [[Screenshots]] for a workaround) 
 * Selecting wallpapers from storage does not work. 
 * Screen content is sometimes shortly visible before unlocking. (issue #1275, happens with llvmpipe _llvmpipe_ as well) 
 * Previews of the windows in the tasks switcher are missing. 
 * Switching between apps, apps and the launcher or different views inside an app is sometimes slow and the device may seem unresponsive. 
 * There are issues with using folders with the Trebuchet launcher. _Trebuchet launcher_. (issue #1790, happens with llvmpipe _llvmpipe_ as well) 

 h3. Popular apps from F-Droid _F-Droid_ that do not work 

 * All Firefox-based _Firefox_-based browsers like "IceCatMobile": "_IceCatMobile_": and Orfox _Orfox_ 
 * "Document Viewer": "_Document Viewer_": 
 * "LibreOffice Viewer": "_LibreOffice Viewer_": 
 * "RedReader": "_RedReader_": cannot display images ("upstream bug": 

 h2. See also 

 * There is a page about [[GraphicsResearch]] that gather information to improve graphics support.