From 2c74e00c71b1f543c53ffc94e81810686a95a121 Mon Sep 17 00:00:00 2001 From: Joonbum Ko Date: Mon, 9 May 2022 13:36:25 +0900 Subject: [PATCH] Fix to support EGL_SYNC_NATIVE_FENCE_ANDROID on TIZEN - EGL_SYNC_NATIVE_FENCE_TIZEN is not an official extension. So we need to support official extensions about egl sync. EGL_SYNC_NATIVE_FENCE_TIZEN will be deprecated. Change-Id: I53c4ea248d4ffaf0190619b861633eda450b44c4 Signed-off-by: Joonbum Ko --- include/EGL/eglext.h | 4 ++-- src/egl/drivers/dri2/egl_dri2.c | 27 +-------------------------- src/egl/drivers/dri2/platform_tizen.c | 1 + src/egl/main/eglapi.c | 10 +--------- src/egl/main/eglsync.c | 25 ------------------------- 5 files changed, 5 insertions(+), 62 deletions(-) diff --git a/include/EGL/eglext.h b/include/EGL/eglext.h index f30d274..9d5915a 100644 --- a/include/EGL/eglext.h +++ b/include/EGL/eglext.h @@ -1488,8 +1488,8 @@ EGLAPI EGLBoolean EGLAPIENTRY eglImageInvalidateExternalEXT (EGLDisplay dpy, EGL #ifndef EGL_TIZEN_native_fence_sync #define EGL_TIZEN_native_fence_sync 1 -#define EGL_SYNC_NATIVE_FENCE_TIZEN 0x3144 -#define EGL_SYNC_NATIVE_FENCE_FD_TIZEN 0x3145 +#define EGL_SYNC_NATIVE_FENCE_TIZEN EGL_SYNC_NATIVE_FENCE_ANDROID +#define EGL_SYNC_NATIVE_FENCE_FD_TIZEN EGL_SYNC_NATIVE_FENCE_FD_ANDROID #define EGL_NO_NATIVE_FENCE_FD_TIZEN -1 typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDTIZENPROC) (EGLDisplay dpy, EGLSyncKHR sync); #ifdef EGL_EGLEXT_PROTOTYPES diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index d04ed54..bd89737 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -3592,17 +3592,10 @@ dri2_egl_unref_sync(struct dri2_egl_display *dri2_dpy, case EGL_SYNC_REUSABLE_KHR: cnd_destroy(&dri2_sync->cond); break; -#ifdef HAVE_TIZEN_PLATFORM - case EGL_SYNC_NATIVE_FENCE_TIZEN: - if (dri2_sync->base.SyncFd != EGL_NO_NATIVE_FENCE_FD_TIZEN) - close(dri2_sync->base.SyncFd); - break; -#else case EGL_SYNC_NATIVE_FENCE_ANDROID: if (dri2_sync->base.SyncFd != EGL_NO_NATIVE_FENCE_FD_ANDROID) close(dri2_sync->base.SyncFd); break; -#endif default: break; } @@ -3690,20 +3683,6 @@ dri2_create_sync(_EGLDisplay *disp, EGLenum type, const EGLAttrib *attrib_list) dri2_sync->base.SyncStatus = EGL_UNSIGNALED_KHR; break; -#ifdef HAVE_TIZEN_PLATFORM - case EGL_SYNC_NATIVE_FENCE_TIZEN: - if (dri2_dpy->fence->create_fence_fd) { - dri2_sync->fence = dri2_dpy->fence->create_fence_fd( - dri2_ctx->dri_context, - dri2_sync->base.SyncFd); - } - if (!dri2_sync->fence) { - _eglError(EGL_BAD_ATTRIBUTE, "eglCreateSyncKHR"); - goto fail; - } - break; - } -#else case EGL_SYNC_NATIVE_FENCE_ANDROID: if (dri2_dpy->fence->create_fence_fd) { dri2_sync->fence = dri2_dpy->fence->create_fence_fd( @@ -3716,7 +3695,7 @@ dri2_create_sync(_EGLDisplay *disp, EGLenum type, const EGLAttrib *attrib_list) return NULL; } break; -#endif + } p_atomic_set(&dri2_sync->refcount, 1); mtx_unlock(&dri2_dpy->lock); @@ -3849,11 +3828,7 @@ dri2_client_wait_sync(_EGLDisplay *disp, _EGLSync *sync, switch (sync->Type) { case EGL_SYNC_FENCE_KHR: -#ifdef HAVE_TIZEN_PLATFORM - case EGL_SYNC_NATIVE_FENCE_TIZEN: -#else case EGL_SYNC_NATIVE_FENCE_ANDROID: -#endif case EGL_SYNC_CL_EVENT_KHR: if (dri2_dpy->fence->client_wait_sync(dri2_ctx ? dri2_ctx->dri_context : NULL, dri2_sync->fence, wait_flags, diff --git a/src/egl/drivers/dri2/platform_tizen.c b/src/egl/drivers/dri2/platform_tizen.c index 9c3ca90..7a2798f 100755 --- a/src/egl/drivers/dri2/platform_tizen.c +++ b/src/egl/drivers/dri2/platform_tizen.c @@ -1737,6 +1737,7 @@ dri2_initialize_tizen(_EGLDisplay *disp) dri2_dpy->fence->get_capabilities(dri2_dpy->dri_screen); disp->Extensions.TIZEN_native_fence_sync = (capabilities & __DRI_FENCE_CAP_NATIVE_FD) != 0; + disp->Extensions.ANDROID_native_fence_sync = disp->Extensions.TIZEN_native_fence_sync; } return EGL_TRUE; diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index a2aad08..baef5c1 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1988,8 +1988,7 @@ _eglCreateSync(_EGLDisplay *disp, EGLenum type, const EGLAttrib *attrib_list, * error is generated. */ if (!ctx && - (type == EGL_SYNC_FENCE_KHR || type == EGL_SYNC_NATIVE_FENCE_ANDROID - || type == EGL_SYNC_NATIVE_FENCE_TIZEN)) + (type == EGL_SYNC_FENCE_KHR || type == EGL_SYNC_NATIVE_FENCE_ANDROID)) RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SYNC_KHR); if (ctx && (ctx->Resource.Display != disp)) @@ -2008,17 +2007,10 @@ _eglCreateSync(_EGLDisplay *disp, EGLenum type, const EGLAttrib *attrib_list, if (!disp->Extensions.KHR_cl_event2) RETURN_EGL_ERROR(disp, invalid_type_error, EGL_NO_SYNC_KHR); break; -#ifdef HAVE_TIZEN_PLATFORM - case EGL_SYNC_NATIVE_FENCE_TIZEN: - if (!disp->Extensions.TIZEN_native_fence_sync) - RETURN_EGL_ERROR(disp, invalid_type_error, EGL_NO_SYNC_KHR); - break; -#else case EGL_SYNC_NATIVE_FENCE_ANDROID: if (!disp->Extensions.ANDROID_native_fence_sync) RETURN_EGL_ERROR(disp, invalid_type_error, EGL_NO_SYNC_KHR); break; -#endif default: RETURN_EGL_ERROR(disp, invalid_type_error, EGL_NO_SYNC_KHR); } diff --git a/src/egl/main/eglsync.c b/src/egl/main/eglsync.c index df62d8d..ccad83b 100644 --- a/src/egl/main/eglsync.c +++ b/src/egl/main/eglsync.c @@ -59,16 +59,6 @@ _eglParseSyncAttribList(_EGLSync *sync, const EGLAttrib *attrib_list) err = EGL_BAD_ATTRIBUTE; } break; -#ifdef HAVE_TIZEN_PLATFORM - case EGL_SYNC_NATIVE_FENCE_FD_TIZEN: - if (sync->Type == EGL_SYNC_NATIVE_FENCE_TIZEN) { - /* we take ownership of the native fd, so no dup(): */ - sync->SyncFd = val; - } else { - err = EGL_BAD_ATTRIBUTE; - } - break; -#else case EGL_SYNC_NATIVE_FENCE_FD_ANDROID: if (sync->Type == EGL_SYNC_NATIVE_FENCE_ANDROID) { /* we take ownership of the native fd, so no dup(): */ @@ -77,7 +67,6 @@ _eglParseSyncAttribList(_EGLSync *sync, const EGLAttrib *attrib_list) err = EGL_BAD_ATTRIBUTE; } break; -#endif default: err = EGL_BAD_ATTRIBUTE; break; @@ -110,18 +99,12 @@ _eglInitSync(_EGLSync *sync, _EGLDisplay *disp, EGLenum type, case EGL_SYNC_CL_EVENT_KHR: sync->SyncCondition = EGL_SYNC_CL_EVENT_COMPLETE_KHR; break; -#ifdef HAVE_TIZEN_PLATFORM - case EGL_SYNC_NATIVE_FENCE_TIZEN: - sync->SyncCondition = EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR; - break; -#else case EGL_SYNC_NATIVE_FENCE_ANDROID: if (sync->SyncFd == EGL_NO_NATIVE_FENCE_FD_ANDROID) sync->SyncCondition = EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR; else sync->SyncCondition = EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID; break; -#endif default: sync->SyncCondition = EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR; } @@ -150,11 +133,7 @@ _eglGetSyncAttrib(_EGLDisplay *disp, _EGLSync *sync, (sync->Type == EGL_SYNC_FENCE_KHR || sync->Type == EGL_SYNC_CL_EVENT_KHR || sync->Type == EGL_SYNC_REUSABLE_KHR || -#ifdef HAVE_TIZEN_PLATFORM - sync->Type == EGL_SYNC_NATIVE_FENCE_TIZEN)) -#else sync->Type == EGL_SYNC_NATIVE_FENCE_ANDROID)) -#endif disp->Driver->ClientWaitSyncKHR(disp, sync, 0, 0); *value = sync->SyncStatus; @@ -162,11 +141,7 @@ _eglGetSyncAttrib(_EGLDisplay *disp, _EGLSync *sync, case EGL_SYNC_CONDITION_KHR: if (sync->Type != EGL_SYNC_FENCE_KHR && sync->Type != EGL_SYNC_CL_EVENT_KHR && -#ifdef HAVE_TIZEN_PLATFORM - sync->Type != EGL_SYNC_NATIVE_FENCE_TIZEN) -#else sync->Type != EGL_SYNC_NATIVE_FENCE_ANDROID) -#endif return _eglError(EGL_BAD_ATTRIBUTE, "eglGetSyncAttribKHR"); *value = sync->SyncCondition; break; -- 2.7.4