Other Parts Discussed in Thread: AM3517, OMAP3530
I have an OpenGL ES1 application that has been run previously on OMAP3530 and now more recently on the AM3517.
With the latest set of drivers 3.1.0.6 and a 2.6.32 kernel it locks up after a fairly random amount of time (20 minutes to 20 hours+). The previous set I was using were 3.0.0.9.
I think it might be something to do with updating textures in a VBO periodically (approximately once a second) - this is a bit of a wild guess!
Adding "DisableHWTextureUpload=1" to /etc/powervr.ini seems to make the problem worse (locks up in 1 to 2 minutes) - it isn't clear to me what this means.
The lock up is:
#0 0x4024081c in ioctl () from /lib/libc.so.6
#1 0x400c0874 in PVRSRVBridgeCall (hServices=<value optimized out>, ui32FunctionID=3223086917, pvParamIn=<value optimized out>,
ui32InBufferSize=<value optimized out>, pvParamOut=0xbebce308, ui32OutBufferSize=8)
at /home/prabu/gfxsdkcreate_new/ti_references/sources/GFX_Linux_DDK/src/eurasia/services4/srvclient/env/linux/common/pvr_bridge_u.c:201
#2 0x400c01c4 in PVRSRVEventObjectWait (psConnection=<value optimized out>, hOSEvent=0xf)
at /home/prabu/gfxsdkcreate_new/ti_references/sources/GFX_Linux_DDK/src/eurasia/services4/srvclient/env/linux/common/osfunc_um.c:307
#3 0x400c3ff4 in SGXKickTA (psDevData=0x0, psKickTA=0x436e28, psKickOutput=0x436fa8, pvKickPDUMP=<value optimized out>, pvKickSubmit=0x0)
at /home/prabu/gfxsdkcreate_new/ti_references/sources/GFX_Linux_DDK/src/eurasia/services4/srvclient/devices/sgx/sgxkick_client.c:1462
#4 0x4004c5e8 in ScheduleTA (gc=0x436e20, psRenderSurface=0x435d68, ui32KickFlags=0) at sgxif.c:1474
#5 0x400603fc in GLES1EmitState (gc=<value optimized out>, ui32NumIndices=3200051268, uIndexAddress={uiAddr = 28233728}, ui32IndexOffset=1074015596)
at validate.c:5813
#6 0x4003a134 in glDrawArrays (mode=5, first=0, count=4) at drawvarray.c:2146
#7 0x0002dc50 in widget_button_render (w=0xc99b88, parent_props=0xbebce9b0) at phone_gui/src/widget-button.c:99
Digging through the source, the ioctl that it is blocked on is PVRSRV_BRIDGE_EVENT_OBJECT_WAIT.
Can anyone offer any insight into this? Currently updates to the VBO are done as follows:
Enter the render function ...
if(t->data_changed && t->gl_handle != 0)
{
glBindTexture(GL_TEXTURE_2D, t->gl_handle);
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, t->texture_width, t->texture_height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, t->data);
t->data_changed = false;
}
Render ...
This texture updating thing could be a complete red herring - I will try and make a smaller text case, but in the meantime any one have any bright ideas?
Thank you in advance!
Richard.