This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Jelly Bean graphics performance drops way down with Navigation Bar

Other Parts Discussed in Thread: 4460, 4430

Hi.

In order to support a device without buttons, I have turned on the Android Navigation Bar.  I used patches from:

    https://groups.google.com/forum/#!topic/rowboat/_9IYwTL4y84/discussion

as recommended by:

    http://e2e.ti.com/support/embedded/android/f/509/t/196372.aspx

for ICS.  My device uses landscape mode.

However, when I do so, the graphics performance drops considerably.  Prior to the change I GearsES2 was showing 57 frames per second.  After the change, fps is 9.

I have verified that it is still using the SGX for graphics and not software rendering:

    I/libEGL  (  237): Processor type: omap4430
    I/libEGL  (  237): egl.cfg: entry POWERVR_SGX540_120 omap4430
    I/libEGL  (  237): Picked EGL type 'POWERVR_SGX540_120' for processor 'omap4430'
    D/libEGL  (  237): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
    D/libEGL  (  237): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
    D/libEGL  (  237): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so

Is this because the output window no longer occupies the full framebuffer?  And this results in buffer flipping not being used?  (long shot guess).

Any thoughts on how this can be resolved?

Thanks,

    Steve

  • I have this patch on AM335x evm (with SGX530) running JB 4.2 and the gears app runs at ~60 fps.

    From your logs, it appears that you are using omap4 with SGX 540. I am not in a position to say why this issue is seen for your device.

  • Steve, 

    Can you elaborate on your specific setup ( device / lcd resolution / JB dpi ) ?

    Also, can you post the output of "dumpsys SurfaceFlinger"? 

    -Jing

  • Hi Jing.

    The device is a custom omap4 board (Phytec SoM).  It makes no difference if a 4430 or 4460 chip is used.

    The LCD is 800x480 and the device.mk file specifies ro.sf.lcd_density=240.

    In order to turn on the Navigation Bar, the device's overlay/frameworks/base/core/res/res/values/config.xml file has the following entry:

           <bool name="config_showNavigationBar">true</bool>

    With this set to false, the visible region is 800x480 and the Gears application reports 57 fps.

    With this set to true, the visible region is 737x480 (Navigation Bar on the right edge) and the Gears application reports 9 fps.

    I have attached the output of "dumpsys SurfaceFlinger" -- captured while running the Gears app.

    Regards,

        Steve

  • Hi Steve, 

    Couple of things I noticed from your dumpsys. 

    1) The benchmark tool you are using is quite outdated  - com.jeffboody.GearsES2eclair/com.jeffboody.GearsES2eclair.GearsES2eclair

        You should be using an update benchmark such as the GLES test from the SGX DDK.

    2) You are running a custom framework hence overlay/. Therefore I am unable to reproduce your specific setup.

    Nevertheless, we can try to narrow down the issue as follow.

    Given the updated benchmark, can you post the dumpsys & fps for the following situation while running the benchmark? 
        a) config_showNavigationBar set to false

        b) config_showNavigationBar set to true

        c) config_showNavigationBar set to false, disable HWC

        d) config_showNavigationBar set to true, disable HWC


    a&b shows us the impact of the xml change upon composed layers during the benchmark

    c&d will tell us whether the fps is dropping due to synchronization. 


    How do I disable HWC?

    HWComposer can be disabled by removing/renaming the HWC HAL library from /system/vendor/lib/hw/. This will force SurfaceFlinger to use SGX composition for application all layers.

    adb shell "mv /system/vendor/lib/hw/hwcomposer.omap4.so /system/vendor/lib/hw/hwcomposer.omap4.so-orig"

    HWC can be dynamically enabled or disabled using following commands

    HWC disable on

    service call SurfaceFlinger 1008 i32 1
    

    HWC disable off

    service call SurfaceFlinger 1008 i32 0
    


  • Hi Jing.

    With a new port to our board (now based on 4AJ.2.3 rather than 4AJ.2.0), this problem has gone away.

    Thanks for your help.

        Steve