Project

General

Profile

GraphicsResearch » History » Version 5

Wolfgang Wiedmeyer, 04/20/2017 05:32 PM
a little and wording; add GTA04

1 1 Wolfgang Wiedmeyer
h1. Research on free graphics-related software
2
3 5 Wolfgang Wiedmeyer
On this page, information is collected that could help solving graphics issues in Replicant (see #1539). Besides evaluating free implementations that are relevant for currently supported devices, other implementations should also be listed if they are useful for potential future target devices.
4 1 Wolfgang Wiedmeyer
5
h2. Software rendering
6
7 2 Wolfgang Wiedmeyer
Software rendering uses the CPU and not a dedicated graphics processor for graphics rendering. It is slower than per-GPU implementations and is usually used when it is not possible to make use of the GPU. An advantage is that the same software renderer can work across many different types of hardware, so working on improving a software renderer benefits many different devices, regardless of the SOC that is used. Furthermore, a software renderer doesn't require a kernel driver which makes it easier to work on mainline Linux kernel support for a device.
8
9 1 Wolfgang Wiedmeyer
h3. Android software renderer
10 2 Wolfgang Wiedmeyer
11
source code: https://git.replicant.us/replicant/frameworks_native/tree/replicant-6.0/opengl/libagl
12
13
The Android software renderer is currently used on all Replicant-supported devices and it is the fastest software renderer that is available for Replicant devices. It is a software renderer that was developed specifically for Android and it is part of the AOSP source code. The renderer includes optimizations for ARM. Development ceased in 2013 and no work was done to support newer GLES versions (which causes #705).
14
15
Until ca. 2011 (Android 4.0), another library with the name @libagl2@ existed and @surfaceflinger2@ was developed based on Mesa. The source code was later removed and no further development is known. At the time, the work was done to support a newer GLES version for the software renderer, but it was abandoned later. It is questionable if it is worth it to port the old @libagl2@ library to a recent Replicant version, also given that we would be the only ones using and maintaining the code.
16 1 Wolfgang Wiedmeyer
17
h3. llvmpipe
18
19 3 Wolfgang Wiedmeyer
source code in Replicant: https://git.replicant.us/replicant/external_mesa3d
20
documentation: https://www.mesa3d.org/llvmpipe.html
21
22 4 Wolfgang Wiedmeyer
For the needs in Replicant, llvmpipe has an EGL implementation that is complete enough. But some apps don't work due to minor bugs which seem fixable or which might already be fixed in more recent upstream versions. swrast is of no interest as it is slower than llvmpipe.
23 3 Wolfgang Wiedmeyer
24
The "Android-x86  project":http://www.android-x86.org/ is using llvmpipe and quite a few of their Android-specific frameworks patches are applied in Replicant 6.0. Their Mesa source code fork is also used in Replicant 6.0. A lot of porting work of llvmpipe to Android was done by Jide while Intel is contributing as well. So there is an interest from different parties to have llvmpipe working on Android. Android patches are upstreamed to mainline Mesa.
25
26
However, llvmpipe is still not ported to ARM which makes it slow. Also for Android, it is mostly used on the x86 platform in other projects. See #705 for more information. Optimizing llvmpipe for ARM seems currently the most promising approach to fix graphics-related issues with Replicant.
27
28 1 Wolfgang Wiedmeyer
h3. SwiftShader
29 3 Wolfgang Wiedmeyer
30
source code: https://swiftshader.googlesource.com/SwiftShader
31
32 4 Wolfgang Wiedmeyer
"Google released SwiftShader as free software in mid 2016":https://blog.chromium.org/2016/06/universal-rendering-with-swiftshader.html. It seems to only target x86 and is used in the Chromium project. It is unclear how it exactly compares to lllvmipe, but considering its current use cases which are vastly different than ours, it doesn't look more promising than llvmpipe. It doesn't seem to be adapted by other projects yet, including Android-x86.
33 1 Wolfgang Wiedmeyer
34
h2. Per-GPU implementations
35
36
h3. ARM Mali
37
38
supported devices that use Mali 400: Galaxy S 2, Galaxy S 3, Galaxy S 3 4G, Galaxy Note, Galaxy Note 2
39
40
h3. Imagination PowerVR
41
42
supported devices that use PowerVR SGX540: Nexus S, Galaxy S, Galaxy Nexus, Galaxy Tab 2 7.0, Galaxy Tab 2 10.1
43 5 Wolfgang Wiedmeyer
supported devices that use PowerVR SGX530: GTA04
44 1 Wolfgang Wiedmeyer
45
h3. Qualcomm Adreno