Graphics¶
Graphics is an essential part of Halium. Halium uses libhybris to make Android’s bionic based hardware adaptations layer usable with glibc systems.
Tests¶
Here is some tests to test the graphics stack
EGL_PLATFORM=hwcomposer test_hwcomposer
test_egl
test_egl_config
test_glesv2
Todo
Add tests using more heavy graphics applications using Wayland (mir)
Common errors¶
EGL_BAD_SURFACE¶
If these tests fail but some others succeed (lights, vibrator, Wi-Fi), you may need software which is built for Code Aurora Forum’s Android for MSM (generally nicknamed “CAF” for short) rather than AOSP.
If this is the case, you’ll encounter errors similar to the following in Logcat:
W Adreno-GSL: <gsl_ldd_control:475>: ioctl fd 8 code 0xc0140933 (IOCTL_KGSL_TIMESTAMP_EVENT) failed: errno 22 Invalid argument
W Adreno-GSL: <ioctl_kgsl_syncobj_create:2984>: (9, 1, 62845) fail 22 Invalid argument
W Adreno-EGLSUB: <SwapBuffers:1339>: gsl_device_3d_add_fence_event failed
W Adreno-EGL: <qeglDrvAPI_eglSwapBuffers:3890>: EGL_BAD_SURFACE
On the reference rootfs, you can get this software from the Halium repository by running the following commands:
. /etc/environment
echo "deb http://repo.halium.org/caf xenial main" >> /etc/apt/sources.list.d/halium-caf.list
apt-get update
apt-get dist-upgrade
Non-reference distributions will need to provide software which is compatible with CAF Android trees.
Reading pm4 microcode failed¶
This error may appear in Logcat when running these tests:
kgsl kgsl-3d0: |_load_firmware| request_firmware(a330_pm4.fw) failed: -2 … kgsl kgsl-3d0: |adreno_init| Reading pm4 microcode failed a330_pm4.fw
To resolve this, toggle CONFIG_FW_***LOADER
in your kernel config.
test_hwcomposer failure on aarch64 device with armhf rootfs¶
On an armhf only rootfs, test_hwcomposer will fail despite doing the above on 64-bit devices running kernel 3.18.
To work around the issue, apply this patch to your device’s kernel repository.