Hi,
I have a board odroid xu3 running android 4.4. Recently I want to compare the performance of hardware rendering (that is, gpu do the rendering work) and software rendering (cpu do the rendering work with libGLES_android.so). Now I am trying to disable hardware accelerate to get the performance of software rendering.
I did some tries but failed. 1) The file "egl.cfg" locating "/system/lib/egl/" manages the lib used to render a frame. The default config is "0 0 mali". I made some modification "0 0 mali" -> "0 0 android" but it doesn't work. 2) Still I found another lib named "libGLES_mali.so" at "/vendor/lib/egl/" and I found the rendering lib is exactly "libGLES_mali.so". Android loads hardwre accelerating lib which is "libGLES_mali.so" here defaultly but it will load software lib ("libGLES_android.so") when hardwre accelerating lib is missing. So I delete "libGLES_mali.so". Unfortunately the screen didn't work.
I am confused now. Could you tell me how to disable GPU hardware accelerate?
Hi seufanghao,
The egl.cfg file is deprecated and no longer used from version 4.4 onwards. Although this file is still present in 4.4 onwards, the system does not look at it.
libGLES_android.so is indeed the software gfx renderer, however it is NOT a complete GLES software renderer. Android requires OpenGL ES 2.0 as of version 4.0 onwards.
If you are interested in learning more about libGLES_android.so specifically, please look up PixelFlinger and libAGL.
As such, for your target Android version of 4.4, there is no software rendering backend to 'enable' so you cannot disable the GPU. (Well you can disable it, but as you have discovered, this leads to nothing being rendered at all).
I hope that helps.
Kind Regards,
Michael McGeagh
I am also facing same kind of problem but in android marshmallow on Raspberrypi 3 platform. It is using libGLES_mesa.so but I need to use libGLES_android.so to test some feature on software renderer.
Atleast is there any way for my target(6.0.1) ?
Hi mukeshkumar,
As stated before:
Android requires OpenGL ES 2.0 as of version 4.0 onwards.
As such, for anything to be displayed, you need something (hardware or indeed software) that is capable of OpenGL ES 2.0.
libGLES_android.so is NOT full OpenGL ES 2.0 so cannot be used solely on any Android platform running version 4 or above.
I hope that helps clarify.
Please also note that none of this is specific to Mali, nor ARM itself.
I would recommend if you would like a more comprehensive answer, to ask Android/Google directly.