GPU Hardware accelerated Browsing over iMX6 Sabrelite

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

GPU Hardware accelerated Browsing over iMX6 Sabrelite

Jump to solution
10,636 Views
salil
Contributor II

Hello,

I have purchased a Freescale iMX6 Sabrelite product. Need some or any release which runs over SabreLite and has GPU acceleration enabled. We have some application which uses webkit/gtk+ based browser (Midori) and whole idea of this activity is to accelerate that application performance; which otherwise is really sluggish. Hope somebody has done this thing earlier and observed gain in browsing experience by using GPU based acceleration.

For the past 1 week I am trying to bring up few releases and one amongst them is from boundary devices which contains GPU hardware acceleration enabled on it but did not see much gains with respect to browsing performance/experience on it.

Also, I am pretty sure that I am not alone and I could easily see very cheap tablets like given in the link (Amazon.com : MK808 Dual Core Android 4.1 TV BOX Rockchip RK3066 Cortex-A9 Mini PC Smart TV Stick : E...) running our application very well, which on SabreLite is very very sluggish. I am quite sure tablet is using some GPU acceleration to improve the browsing experience and hence our application runs very smooth on it abd it looks it runs android image. The cost of Sabrelite is not cheap but we are not able to extract that mileage out of this so called high performance board. My gut feeling is answer lies in choosing the correct release which has kernel components as well as user space libraries meant to support GPU acceleration. With Boundary devices release I could see below set of kernel modules loaded (using lsmod ). Also,  I could see below set of libraries present on the system:

Kernel Modules

--------------------

vivante.ko

drm.ko

Libraries

------------

/lib/modules/3.0.35-g0aec58d/kernel/drivers/gpu/drm/vivante/vivante.ko

/usr/lib/xorg/modules/drivers/vivante_drv.la

/usr/lib/xorg/modules/drivers/vivante_drv.so

/usr/lib/dri/vivante_dri.so

Could any of the Android releases help in this case? Does Android stack is better supported in terms of exploiting the GPU hardware?

Please help in clearing the doubts related to accelerated browsing experience over iMX6 Sabrelite. We have chosen Sabrelite because of it superior peripheral support including PCIe and SATA and what we require now is smooth user browsing which unfortunately is not happening in any of the releases i have tried so far. Any thoughts are welcomed.

regards

Salil

1 Solution
2,607 Views
ChucoChe
NXP Employee
NXP Employee

Here is how to disable android GPU acceleration, the info was provided by one of Freescale R&D engineers .

There are three kinds of GPU acceleration on android ICS and JB, 2D HWComposer, 3D OpengGL and 3D OpenGL HW Render.

You can follow below methods to disable them separately.

  1. 1. Disable 2D as below, you have checked the issue still here.

$mount –o remount rw /system

$cd system/lib/hw

$mv hwcomposer_viv.imx6.so hwcomposer_viv.imx6.so.bak

$sync

$reboot

  1. 2. Disable HW Render by do below code change and recompile by ”mm -B”, it will update libandroid_runtime.so.

r66033@killerbee0:~/AndroidJB/frameworks/base/core/jni$ git diff

diff --git a/core/jni/Android.mk b/core/jni/Android.mk

index 3ca085b..3fd986a 100644

--- a/core/jni/Android.mk

+++ b/core/jni/Android.mk

@@ -20,7 +20,7 @@ ifneq ($(USE_CUSTOM_RUNTIME_HEAP_MAX),)

endif

ifeq ($(USE_OPENGL_RENDERER),true)

- LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER

+# LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER

endif

LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES

@@ -220,7 +220,7 @@ LOCAL_CFLAGS += -DHAVE_SELINUX

endif # HAVE_SELINUX

ifeq ($(USE_OPENGL_RENDERER),true)

- LOCAL_SHARED_LIBRARIES += libhwui

+# LOCAL_SHARED_LIBRARIES += libhwui

endif

r66033@killerbee0:~/AndroidJB/frameworks/base/core/jni$ mm –B

  1. 3. Disable GPU 3D (need disable HW Render first, then do below change on your board)

$cd system/lib/egl

$mv libEGL_VIVANTE.so libEGL_VIVANTE.so.bak

$busybox vi egl.cfg, delete red color code

  0 0 android

  0 1 VIVANTE

$sync

$reboot

View solution in original post

6 Replies
2,607 Views
ChucoChe
NXP Employee
NXP Employee

Hi,

FSL Android releases have webkit and HTML5 GPU acceleration compatible with HTML5 CTS unfortunately this are for sabeSD and sabreAuto.

You need to talk directly to boundary devices, to see when they plan an update.

Michel

2,607 Views
salil
Contributor II

Hello,

Thanks for the answer and I was able to port Android JellyBean 4.2.2 on SabreLite and it is running amazingly well. Browsing experience is real smooth in this release though still not sure is it because GPU acceleration which is causing or just in general Android has got much better graphics stack than Linux/Xorg based stack used by browsers.

Few more questions:

1. Is there any way of knowing while browsing on Android over SabreLite/SabreSD whether we are hitting GPU for certain legs are there any profiling tools or any tools by Freescale which can be suggested to make sure GPU is being used. I could see within Settings->Developers options certain check-boxes to force enable GPU and even profile or indicate GPU overdraw but not sure even if they are working since enabling/disabling them does not seem to effect the performance.

2.  Are you also aware of any similar Ubuntu/Debian releases over SabreSD which have known to accelerate Browsers/Xorg stack. I was told that SabreSD release should run as it is over SabreLite? This would be really handy since developing server application for Android is not an easy task because of its security features.

Please place your expert comments.

regards

Salil

0 Kudos
2,607 Views
ChucoChe
NXP Employee
NXP Employee

Hi,

    1)  I believe there is a way to turn on and off the graphics acceleration. I'm trying to find out how. I'll let you know as soon as I have the info.

     About the developer settings related to GPU I believe they are "android generic" and should be supported by our BSP. I guess you can find more info about them in the Android developer web page.

     2) We have accelerated X on our ubuntu releases. I believe there is no browser acceleration on ubuntu.

2,607 Views
michaelg
Contributor I

hi,
sorry for the simplified question but i am a newbie.
we are running on a imx6 sabresd quad and i want to monitor the gpu usage.
when i try lsmod i get:

vivante 943 0 - Live 0xbf031000

drm 136934 1 vivante, Live 0xbf000000

so i guess the vivante is up and running fine,
but is there a certain way to get the gpu statistics/performance/usage or anything of this statistics?

or even to get a certain  clue that gpu is running?

i went through all relevant threads and didn't find an answer so i will very appreciate any help.

regards,
Michael

0 Kudos
2,607 Views
ChucoChe
NXP Employee
NXP Employee

If you download the vdk tools from the freescale webpage. You can get a profiling gpu dirver for linux and instructions on how to recompile the kernel for gpu profiling.

When you run a gpu application it will generate a file that you can load in vprofiler for analysis. It's all in the VDKtools users guide document that also comes with the package.

We don't have a tool to dump the debug information of the gpu at any given time.

You can check the bandwidth of the DDR using the attached tool. Just copy it to your rootfs and run it.

Michel

2,608 Views
ChucoChe
NXP Employee
NXP Employee

Here is how to disable android GPU acceleration, the info was provided by one of Freescale R&D engineers .

There are three kinds of GPU acceleration on android ICS and JB, 2D HWComposer, 3D OpengGL and 3D OpenGL HW Render.

You can follow below methods to disable them separately.

  1. 1. Disable 2D as below, you have checked the issue still here.

$mount –o remount rw /system

$cd system/lib/hw

$mv hwcomposer_viv.imx6.so hwcomposer_viv.imx6.so.bak

$sync

$reboot

  1. 2. Disable HW Render by do below code change and recompile by ”mm -B”, it will update libandroid_runtime.so.

r66033@killerbee0:~/AndroidJB/frameworks/base/core/jni$ git diff

diff --git a/core/jni/Android.mk b/core/jni/Android.mk

index 3ca085b..3fd986a 100644

--- a/core/jni/Android.mk

+++ b/core/jni/Android.mk

@@ -20,7 +20,7 @@ ifneq ($(USE_CUSTOM_RUNTIME_HEAP_MAX),)

endif

ifeq ($(USE_OPENGL_RENDERER),true)

- LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER

+# LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER

endif

LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES

@@ -220,7 +220,7 @@ LOCAL_CFLAGS += -DHAVE_SELINUX

endif # HAVE_SELINUX

ifeq ($(USE_OPENGL_RENDERER),true)

- LOCAL_SHARED_LIBRARIES += libhwui

+# LOCAL_SHARED_LIBRARIES += libhwui

endif

r66033@killerbee0:~/AndroidJB/frameworks/base/core/jni$ mm –B

  1. 3. Disable GPU 3D (need disable HW Render first, then do below change on your board)

$cd system/lib/egl

$mv libEGL_VIVANTE.so libEGL_VIVANTE.so.bak

$busybox vi egl.cfg, delete red color code

  0 0 android

  0 1 VIVANTE

$sync

$reboot