Fix to support EGL_SYNC_NATIVE_FENCE_ANDROID on TIZEN
authorJoonbum Ko <joonbum.ko@samsung.com>
Mon, 9 May 2022 04:36:25 +0000 (13:36 +0900)
committerXuelian Bai <xuelian.bai@samsung.com>
Tue, 21 Feb 2023 06:55:00 +0000 (14:55 +0800)
 - 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 <joonbum.ko@samsung.com>
include/EGL/eglext.h
src/egl/drivers/dri2/egl_dri2.c
src/egl/drivers/dri2/platform_tizen.c
src/egl/main/eglapi.c
src/egl/main/eglsync.c

index f30d274..9d5915a 100644 (file)
@@ -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
index d04ed54..bd89737 100644 (file)
@@ -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,
index 9c3ca90..7a2798f 100755 (executable)
@@ -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;
index a2aad08..baef5c1 100644 (file)
@@ -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);
    }
index df62d8d..ccad83b 100644 (file)
@@ -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;