Firefly Open Source Community

Title: Android Dev : surfaceview / thread / canvas [Print This Page]

Author: difrait    Time: 4/25/2016 23:24
Title: Android Dev : surfaceview / thread / canvas
Hello,

we try to remplave Radxa (RK3188 Mali 400) by the Firefly RK3288. On paper, Firefly performance are better than the Radxa one. But we meet a problem using surfaceview / Canvas refresh rate:

-> On Radxa the time between to frame is stable and around 16ms
-> On Firefly, the same code give 25 or 32 ms ... and show lag and "fickering" on screen.

radxa has android 4.2.2 and firefly "out of the box" 4.4.

Please is some one as an idea from where this lower performance can came from.

thanks
Author: dewet    Time: 4/26/2016 01:09
Hi

Please try Android 5.1 on Firefly.
It should provide far better performance.

Can you tell more about what you are trying to do?
I'm sure someone will be able to help you if they can do similar tests and provide feedback.
Author: difrait    Time: 4/26/2016 16:43
Title: RE: Android Dev : surfaceview / thread / canvas
Hi,

thank you for your help.
I have try Android 5.1 and the result is worse ... i can back to 4.4 (mars 2016 the last one).

What i do is develop android application in witch i want to display a 360กใ panorama 'turning at a given velocity".
For that i have a SurfaceView, surfaceholder and a thread.
the thread run is like :
public void run() {
   Canvas c;
   while(run){
      c=null;
      try{
         c=surfaceholder.lockCanvas(null);
         synchronized( surfaceholder){
            surf.draw(c);
         }
      }finally{
         if (c!=null){
            surfaceholder.unlockCanvasAndPost(c);
         }
      }
   }
}
in the draw function i have :

canvas.drawBitmap(bipmap, src , dst, null) ;

the bitmap hold the 360กใ panorama,
src is a rect that move everuy call to draw function and dst is a fixed rect on all screen.

On a RK3188+Mali400 it runs perfectly with a very nice smooth motion (time between to call to
draw is stable and is 16ms).
On firefly the time between to calls are between 25 and 35 ms without stability creating saccades
movement.
If i remove he DrawBitmap call and replace by a simple canvas draw call the time between to calls
came back to 16ms ... so i suspect the drawbitmap call is the problem (memory access ?)...




Author: difrait    Time: 4/29/2016 15:00
hi,

i replace surfaceview by textureview and it is better, but not perfect.... next step us GLSurfaceView .... but still not normal that performances of Rk3288 + Mali T760 looks lower than RK3188 + Mali 400 for this point.


Author: difrait    Time: 5/5/2016 00:02
Hi,

now i use a GLSurfaceView (2.0) and texture to dsplay a bitmap... (small one).
It is not normal that with the RK3288 and Mali T764 i have poor render performance using any display technique (SurfaceView, TextureView, GLSurfaceView)...

With a "basic" RK3188+MALI 400 stick  it is perfect ... (smooth animation without lag). And with this RK3288 i have many saccadic movement. !!!

WHYYYYYYYY   ????
Author: fheredia    Time: 6/3/2016 19:40
Hello,

I have noticed a slower performance as well on the GPU. My board is a Firefly Rk3288 reload.

My application loads a 1080 texture. Here is the information I could get.

- Firefly-RK3288_Beta_Android4.4_201501271125
    - Average loading time 100ms
    - Driver = OpenGL ES 3.1 v1.r6p0-02rel0.0f4218be5cc66c20a4f31b6cc856ee46
    - GPU : Mali-T760

- FireFly-RK3288-Reload_Android5.1_201603111814
    - Average loading time 11ms
    - Driver = OpenGL ES 3.0
    - GPU = Mali-T764

I think the driver has been updated in the Android 5.1 image. How can I select or re-install the GPU driver used in the 4.4 image? Where to get it from?
Author: difrait    Time: 11/25/2020 16:16
Hi,
we still meet problem regarding RK3288 performances / resolution.

In fact we found that with Android 4.4 and HDMI screen resolution 1280x720 all graphic canvas use 1280x720 resolution
(SurfaceView.width = 1280 and SurfaceView.height = 720). This makes that big bitmap manipulation are on 1280x720

With Android 5.1 and HDMI screen resolution 1280x720 all graphic canvas still use 1920x1080 resolution ...
(SurfaceView.width = 1920 and SurfaceView.height = 1080) ... this is the reason that high frame rate (60fps) display is not possible as the Bitmap used is 1920x1080 pixels !!! (even with HDMI output set to 1280x720).

So we back to Android 4.4 on our old RK3288 and it was OK !

Last month we receive new RK3288 from firefly, .. .and it is now impossible to install Android 4.4 ...... so our problem is back again.

Finally we want to use the 5.1 reload firmware, BUT Why the 'working resolution (in Android APK) is not equal to HDMI output mode !! )

Thank you for your help
Author: difrait    Time: 11/27/2020 00:22
.... also i notice that when using the VGA output in place of HDMI and select any available resolution (from very low to high), the SurfaceView "canvas" Width and Height still fixed to 1920x1080 ....

Everything looks like the Android 5.1 works in 1920x1080 and make a final scale to the choosen resolution ...
Witch was not the case for Android 4.4






Welcome Firefly Open Source Community (https://bbs.t-firefly.com/) Powered by Discuz! X3.1