Hi All
Our custom board is OMAP4460 based and using TI's base port ICS 4AI1.4.
We have a camera application, which is doing some image processing on the preview images. i.e. The app is creating a SurfaceTexture and submitting it to Camera HAL so that HAL puts the preview buffers on the texture submitted. Then app would do the image processing on this texture. Another GLSurfaceView is created here to help in processing. We faced jerkiness issue (it is not like how we see when there is frame drop, the top left side portion of the preview frame was like steps and showed something from the previous frame probabaly) in preview when the camera is zoomed and panned. (fyi. Ducati is doing the zooming). Picture attached for reference.
Camera is 2MP and is working at 60fps (CameraHAL fps in OMXAdapterLayer is measured to approx 60). However fps at HWC (i.e. Hardware Composer) is measured 30. On further debug we noticed the following things in HWC. (We have a enabled hardware resizer too , as final image on LCD would be 480x800)
- In HWC set , for every frame the config used was as below
D/ti_hwc ( 118): set H{0x1ccd110:DSS,720*1280(RGB565)} D{1=00000000:720*1280,RGB565} L{0x1ccd110}
- In HWC prepare
prepare (1504) - all-OVL (comp=1, poss=1/1 scaled, RGB=1,BGR=0,NV12=0) (ext= dock=OFF+ rotation=0 deg= 0ex/3mx (last 0ex,1in)
From the above it is clear that SGX is not being used, When we force enabled SGX , the destination layer of HWC changed to ARGB32 and HWC FPS improved to 38 and we no longer see jerkiness issue. We still do not know why the jerkiness is present in case when OmapDSS was used.
We have tried to reproduce this issue on different custom boards which all run same software. Some boards are exhibiting jerkiness issue as early as on panning at 1x zoom some show only after 3X zoom. !! we are puzzled a bit if its a software issue or hardware issue here!!
I have attached the surface flinger dump for reference. 7367.surfaceFlinger.txt
Another weird thing noticed when the screencap or DDMS screen dump of preview frame was taken even those showed the blocky jerkiness in captured images. Does this indicate the issue is somewhere much before the frame reaches the HWC ?
HWC has a logic where it checks if DSS can handle it and does not use SGX in those cases. There was a commit from TI in the source tree of HWC indicating the same.In our application's case as it is extensively using OpenGL to show processed image on camera preview would SGX be appropriate for such scenarios or DSS?
Would really appreciate any thoughts/inputs on this.
Regards,
Krt