diff --git a/tensorflow/lite/delegates/gpu/cl/egl_sync.cc b/tensorflow/lite/delegates/gpu/cl/egl_sync.cc
index 5776eaafdd0..2cc0d6303dc 100644
--- a/tensorflow/lite/delegates/gpu/cl/egl_sync.cc
+++ b/tensorflow/lite/delegates/gpu/cl/egl_sync.cc
@@ -28,23 +28,30 @@ bool HasExtension(EGLDisplay display, const char* extension) {
   return extensions && std::strstr(extensions, extension);
 }
 
-bool IsEglFenceSyncSupported(EGLDisplay display) {
+absl::Status IsEglFenceSyncSupported(EGLDisplay display) {
   static bool supported = HasExtension(display, "EGL_KHR_fence_sync");
-  return supported;
+  if (supported) {
+    return absl::OkStatus();
+  }
+  return absl::InternalError("Not supported: EGL_KHR_fence_sync");
 }
 
-bool IsEglWaitSyncSupported(EGLDisplay display) {
+absl::Status IsEglWaitSyncSupported(EGLDisplay display) {
   static bool supported = HasExtension(display, "EGL_KHR_wait_sync");
-  return supported;
+  if (supported) {
+    return absl::OkStatus();
+  }
+  return absl::InternalError("Not supported: EGL_KHR_wait_sync");
 }
 
 }  // anonymous namespace
 
 absl::Status EglSync::NewFence(EGLDisplay display, EglSync* sync) {
+  RETURN_IF_ERROR(IsEglFenceSyncSupported(display));
   static auto* egl_create_sync_khr =
       reinterpret_cast<decltype(&eglCreateSyncKHR)>(
           eglGetProcAddress("eglCreateSyncKHR"));
-  if (!IsEglFenceSyncSupported(display) || egl_create_sync_khr == nullptr) {
+  if (egl_create_sync_khr == nullptr) {
     // Needs extension: EGL_KHR_fence_sync (EGL) / GL_OES_EGL_sync (OpenGL ES).
     return absl::InternalError(
         "Not supported / bad EGL implementation: eglCreateSyncKHR.");
@@ -74,7 +81,7 @@ void EglSync::Invalidate() {
         reinterpret_cast<decltype(&eglDestroySyncKHR)>(
             eglGetProcAddress("eglDestroySyncKHR"));
     // Needs extension: EGL_KHR_fence_sync (EGL) / GL_OES_EGL_sync (OpenGL ES).
-    if (IsEglFenceSyncSupported(display_) && egl_destroy_sync_khr) {
+    if (IsEglFenceSyncSupported(display_).ok() && egl_destroy_sync_khr) {
       // Note: we're doing nothing when the function pointer is nullptr, or the
       // call returns EGL_FALSE.
       (*egl_destroy_sync_khr)(display_, sync_);
@@ -84,9 +91,10 @@ void EglSync::Invalidate() {
 }
 
 absl::Status EglSync::ServerWait() {
+  RETURN_IF_ERROR(IsEglWaitSyncSupported(display_));
   static auto* egl_wait_sync_khr = reinterpret_cast<decltype(&eglWaitSyncKHR)>(
       eglGetProcAddress("eglWaitSyncKHR"));
-  if (!IsEglWaitSyncSupported(display_) || egl_wait_sync_khr == nullptr) {
+  if (egl_wait_sync_khr == nullptr) {
     // Needs extension: EGL_KHR_wait_sync
     return absl::InternalError("Not supported: eglWaitSyncKHR.");
   }
@@ -98,11 +106,11 @@ absl::Status EglSync::ServerWait() {
 }
 
 absl::Status EglSync::ClientWait() {
+  RETURN_IF_ERROR(IsEglFenceSyncSupported(display_));
   static auto* egl_client_wait_sync_khr =
       reinterpret_cast<decltype(&eglClientWaitSyncKHR)>(
           eglGetProcAddress("eglClientWaitSyncKHR"));
-  if (!IsEglFenceSyncSupported(display_) ||
-      egl_client_wait_sync_khr == nullptr) {
+  if (egl_client_wait_sync_khr == nullptr) {
     // Needs extension: EGL_KHR_fence_sync (EGL) / GL_OES_EGL_sync (OpenGL ES).
     return absl::InternalError("Not supported: eglClientWaitSyncKHR.");
   }