Follow up "i965: Solve Android native fence fd double close" The _EGLSync.SyncFd is not neccesary to keep after pass to dri driver.
Test: Run Vulkan and GLES stress test and no crash. --- src/egl/drivers/dri2/egl_dri2.c | 10 ++++++---- src/mesa/drivers/dri/i965/brw_sync.c | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 0be7132..9ef35d3 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -2637,6 +2637,7 @@ dri2_create_sync(_EGLDriver *drv, _EGLDisplay *dpy, free(dri2_sync); return NULL; } + dri2_sync->base.SyncFd = EGL_NO_NATIVE_FENCE_FD_ANDROID; break; } @@ -2678,24 +2679,25 @@ dri2_dup_native_fence_fd(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(dpy); struct dri2_egl_sync *dri2_sync = dri2_egl_sync(sync); + EGLint SyncFd = sync->SyncFd; assert(sync->Type == EGL_SYNC_NATIVE_FENCE_ANDROID); - if (sync->SyncFd == EGL_NO_NATIVE_FENCE_FD_ANDROID) { + if (SyncFd == EGL_NO_NATIVE_FENCE_FD_ANDROID) { /* try to retrieve the actual native fence fd.. if rendering is * not flushed this will just return -1, aka NO_NATIVE_FENCE_FD: */ - sync->SyncFd = dri2_dpy->fence->get_fence_fd(dri2_dpy->dri_screen, + SyncFd = dri2_dpy->fence->get_fence_fd(dri2_dpy->dri_screen, dri2_sync->fence); } - if (sync->SyncFd == EGL_NO_NATIVE_FENCE_FD_ANDROID) { + if (SyncFd == EGL_NO_NATIVE_FENCE_FD_ANDROID) { /* if native fence fd still not created, return an error: */ _eglError(EGL_BAD_PARAMETER, "eglDupNativeFenceFDANDROID"); return EGL_NO_NATIVE_FENCE_FD_ANDROID; } - return dup(sync->SyncFd); + return SyncFd; } static EGLint diff --git a/src/mesa/drivers/dri/i965/brw_sync.c b/src/mesa/drivers/dri/i965/brw_sync.c index a8356c3..5b78503 100644 --- a/src/mesa/drivers/dri/i965/brw_sync.c +++ b/src/mesa/drivers/dri/i965/brw_sync.c @@ -470,7 +470,7 @@ brw_dri_create_fence_fd(__DRIcontext *dri_ctx, int fd) goto fail; } else { /* Import the sync fd as an in-fence. */ - fence->sync_fd = dup(fd); + fence->sync_fd = fd; } assert(fence->sync_fd != -1); -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev