i am designed an APP used openGLES2.0 at android. it crashed when running for several minutes. the dump file shows that it is crashed at
eglClientWaitSyncKHR --> rb_test_fence. this APP runs quite well on other GPU like powerVR and mali.
further look it shows that the returned GLSync number keep increased even though it does have a eglDestroySync been called to recycle the GLSync in the APP.
it there anything wrong about the SYNC entention implemention at adreno driver?
ps:
GL renderer: Adreno(TM) 320
GL Version = openGLES2.0 [email protected] AU@ (CL@3090659)
APP program sequence:
thread1:
do some rendering
glCreateFenceKHR()
glFlush()
thread2:
glClientWaitSync()
glDestroySync
thread3:
glClientWaitSync()
Hi..
A few questions about the problem with glCreateFence, so that we can better answer..
1) What device are you seeing the crash on? Can you provide the logcat, and specifically the line which mentions the build number:
(e.g.)
<qeglDrvAPI_eglInitialize:316>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_3.2.04.03.00.112.154_msm8974_JB_3.2__release_AU ()
2) Is there an apk that you could provide us that duplicates the crash?
3) Are you calling glFenceSync, and/or how is the sync object being created?
4) Could you provide any more details on some of the flags/tokens that are being used in the calls?
4) Is glClientWaitSync equivalent to eglClientWaitSyncKHR, and glDestroySync equivalent to eglDestroySyncKHR?
thanks,
mark
hi,
thanks for your kindly help.
the content i provied in the PS has some errors. since gles2.0 doesn't support gl_sync_arb, all function i used about sync is EGL_sync extension.
APP program sequence:
thread1:
do some rendering
eglCreateFenceKHR(display, EGL_SYNC_FENCE_KHR, NULL)
glFlush()
thread2:
eglClientWaitSync(display, sync, EGL_SYNC_FLUSH_COMMANDS_BIT_KHR, 10*1000*1000*1000)
eglDestroySync
thread3:
eglClientWaitSync(display, sync, EGL_SYNC_FLUSH_COMMANDS_BIT_KHR, 10*1000*1000*1000)
i might have found out the root cuase. when i move my eglDestroySync to the same thread as eglCreateSync, no issue happened again. seems that the driver has some restriction that createSync and destroySync should be put at the same thread.
any way, thanks for you kindly reply!