/* EGL_VERSION_1_0 */
HOOK_API_ENTRY(EGLBoolean, eglChooseConfig, EGLDisplay dpy, const EGLint *attribList, EGLConfig *configs, EGLint configSize, EGLint *numConfig)
CALL_HOOK_API_RET(eglChooseConfig, dpy, attribList, configs, configSize, numConfig)

HOOK_API_ENTRY(EGLBoolean, eglCopyBuffers, EGLDisplay dpy, EGLSurface surface, NativePixmapType target)
CALL_HOOK_API_RET(eglCopyBuffers, dpy, surface, target)

HOOK_API_ENTRY(EGLContext, eglCreateContext, EGLDisplay dpy, EGLConfig config, EGLContext shareList, const EGLint *attribList)
CALL_HOOK_API_RET(eglCreateContext, dpy, config, shareList, attribList)

HOOK_API_ENTRY(EGLSurface, eglCreatePbufferSurface, EGLDisplay dpy, EGLConfig config, const EGLint *attribList)
CALL_HOOK_API_RET(eglCreatePbufferSurface, dpy, config, attribList)

HOOK_API_ENTRY(EGLSurface, eglCreatePixmapSurface, EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attribList)
CALL_HOOK_API_RET(eglCreatePixmapSurface, dpy, config, pixmap, attribList)

HOOK_API_ENTRY(EGLSurface, eglCreateWindowSurface, EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attribList)
CALL_HOOK_API_RET(eglCreateWindowSurface, dpy, config, window, attribList)

HOOK_API_ENTRY(EGLBoolean, eglDestroyContext, EGLDisplay dpy, EGLContext ctx)
CALL_HOOK_API_RET(eglDestroyContext, dpy, ctx)

HOOK_API_ENTRY(EGLBoolean, eglDestroySurface, EGLDisplay dpy, EGLSurface surface)
CALL_HOOK_API_RET(eglDestroySurface, dpy, surface)

HOOK_API_ENTRY(EGLBoolean, eglGetConfigAttrib, EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
CALL_HOOK_API_RET(eglGetConfigAttrib, dpy, config, attribute, value)

HOOK_API_ENTRY(EGLBoolean, eglGetConfigs, EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
CALL_HOOK_API_RET(eglGetConfigs, dpy, configs, config_size, num_config)

HOOK_API_ENTRY(EGLDisplay, eglGetCurrentDisplay, void)
CALL_HOOK_API_RET(eglGetCurrentDisplay)

HOOK_API_ENTRY(EGLSurface, eglGetCurrentSurface, EGLint readdraw)
CALL_HOOK_API_RET(eglGetCurrentSurface, readdraw)

HOOK_API_ENTRY(EGLDisplay, eglGetDisplay, EGLNativeDisplayType type)
CALL_HOOK_API_RET(eglGetDisplay, type)

HOOK_API_ENTRY(EGLint, eglGetError, void)
CALL_HOOK_API_RET(eglGetError)

HOOK_API_ENTRY(__eglMustCastToProperFunctionPointerType, eglGetProcAddress, const char *procname)
CALL_HOOK_API_RET(eglGetProcAddress, procname)

HOOK_API_ENTRY(EGLBoolean, eglInitialize, EGLDisplay dpy, EGLint *major, EGLint *minor)
CALL_HOOK_API_RET(eglInitialize, dpy, major, minor)

HOOK_API_ENTRY(EGLBoolean, eglMakeCurrent, EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
CALL_HOOK_API_RET(eglMakeCurrent, dpy, draw, read, ctx)

HOOK_API_ENTRY(EGLBoolean, eglQueryContext, EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
CALL_HOOK_API_RET(eglQueryContext, dpy, ctx, attribute, value)

HOOK_API_ENTRY(const char *, eglQueryString, EGLDisplay dpy, EGLint name)
CALL_HOOK_API_RET(eglQueryString, dpy, name)

HOOK_API_ENTRY(EGLBoolean, eglQuerySurface, EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
CALL_HOOK_API_RET(eglQuerySurface, dpy, surface, attribute, value)

HOOK_API_ENTRY(EGLBoolean, eglSwapBuffers, EGLDisplay dpy, EGLSurface surface)
CALL_HOOK_API_RET(eglSwapBuffers, dpy, surface)

HOOK_API_ENTRY(EGLBoolean, eglTerminate, EGLDisplay dpy)
CALL_HOOK_API_RET(eglTerminate, dpy)

HOOK_API_ENTRY(EGLBoolean, eglWaitGL, void)
CALL_HOOK_API_RET(eglWaitGL)

HOOK_API_ENTRY(EGLBoolean, eglWaitNative, EGLint engine)
CALL_HOOK_API_RET(eglWaitNative, engine)

/* EGL_VERSION_1_1 */
HOOK_API_ENTRY(EGLBoolean, eglBindTexImage, EGLDisplay dpy, EGLSurface surface, EGLint buffer)
CALL_HOOK_API_RET(eglBindTexImage, dpy, surface, buffer)

HOOK_API_ENTRY(EGLBoolean, eglReleaseTexImage, EGLDisplay dpy, EGLSurface surface, EGLint buffer)
CALL_HOOK_API_RET(eglReleaseTexImage, dpy, surface, buffer)

HOOK_API_ENTRY(EGLBoolean, eglSurfaceAttrib, EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
CALL_HOOK_API_RET(eglSurfaceAttrib, dpy, surface, attribute, value)

HOOK_API_ENTRY(EGLBoolean, eglSwapInterval, EGLDisplay dpy, EGLint interval)
CALL_HOOK_API_RET(eglSwapInterval, dpy, interval)

/* EGL_VERSION_1_2 */
HOOK_API_ENTRY(EGLBoolean, eglBindAPI, EGLenum api)
CALL_HOOK_API_RET(eglBindAPI, api)

HOOK_API_ENTRY(EGLBoolean, eglQueryAPI, void)
CALL_HOOK_API_RET(eglQueryAPI)

HOOK_API_ENTRY(EGLSurface, eglCreatePbufferFromClientBuffer, EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
CALL_HOOK_API_RET(eglCreatePbufferFromClientBuffer, dpy, buftype, buffer, config, attrib_list)

HOOK_API_ENTRY(EGLBoolean, eglReleaseThread, void)
CALL_HOOK_API_RET(eglReleaseThread)

HOOK_API_ENTRY(EGLBoolean, eglWaitClient, void)
CALL_HOOK_API_RET(eglWaitClient)

/* EGL_VERSION_1_3 */
/* EGL_VERSION_1_4 */
HOOK_API_ENTRY(EGLContext, eglGetCurrentContext, void)
CALL_HOOK_API_RET(eglGetCurrentContext)

/* EGL_VERSION_1_5 */
HOOK_API_ENTRY(EGLSync, eglCreateSync, EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
CALL_HOOK_API_RET(eglCreateSync, dpy, type, attrib_list)

HOOK_API_ENTRY(EGLBoolean, eglDestroySync, EGLDisplay dpy, EGLSync sync)
CALL_HOOK_API_RET(eglDestroySync, dpy, sync)

HOOK_API_ENTRY(EGLint, eglClientWaitSync, EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout)
CALL_HOOK_API_RET(eglClientWaitSync, dpy, sync, flags, timeout)

HOOK_API_ENTRY(EGLBoolean, eglGetSyncAttrib, EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value)
CALL_HOOK_API_RET(eglGetSyncAttrib, dpy, sync, attribute, value)

HOOK_API_ENTRY(EGLImage, eglCreateImage, EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
CALL_HOOK_API_RET(eglCreateImage, dpy, ctx, target, buffer, attrib_list)

HOOK_API_ENTRY(EGLBoolean, eglDestroyImage, EGLDisplay dpy, EGLImage image)
CALL_HOOK_API_RET(eglDestroyImage, dpy, image)

HOOK_API_ENTRY(EGLDisplay, eglGetPlatformDisplay, EGLenum platform, void *native_display, const EGLAttrib *attrib_list)
CALL_HOOK_API_RET(eglGetPlatformDisplay, platform, native_display, attrib_list)

HOOK_API_ENTRY(EGLSurface, eglCreatePlatformWindowSurface, EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list)
CALL_HOOK_API_RET(eglCreatePlatformWindowSurface, dpy, config, native_window, attrib_list)

HOOK_API_ENTRY(EGLSurface, eglCreatePlatformPixmapSurface, EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list)
CALL_HOOK_API_RET(eglCreatePlatformPixmapSurface, dpy, config, native_pixmap, attrib_list)

HOOK_API_ENTRY(EGLBoolean, eglWaitSync, EGLDisplay dpy, EGLSync sync, EGLint flags)
CALL_HOOK_API_RET(eglWaitSync, dpy, sync, flags)

/* EGL_EGLEXT */
/* EGL_KHR_lock_surface */
HOOK_API_ENTRY(EGLBoolean, eglLockSurfaceKHR, EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list)
CALL_HOOK_API_RET(eglLockSurfaceKHR, dpy, surface, attrib_list)

HOOK_API_ENTRY(EGLBoolean, eglUnlockSurfaceKHR, EGLDisplay dpy, EGLSurface surface)
CALL_HOOK_API_RET(eglUnlockSurfaceKHR, dpy, surface)

/* EGL_KHR_image EGL_KHR_image_base */
HOOK_API_ENTRY(EGLImageKHR, eglCreateImageKHR, EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
CALL_HOOK_API_RET(eglCreateImageKHR, dpy, ctx, target, buffer, attrib_list)

HOOK_API_ENTRY(EGLBoolean, eglDestroyImageKHR, EGLDisplay dpy, EGLImageKHR image)
CALL_HOOK_API_RET(eglDestroyImageKHR, dpy, image)

/* EGL_KHR_fence_sync */
HOOK_API_ENTRY(EGLSyncKHR, eglCreateSyncKHR, EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
CALL_HOOK_API_RET(eglCreateSyncKHR, dpy, type, attrib_list)

HOOK_API_ENTRY(EGLBoolean, eglDestroySyncKHR, EGLDisplay dpy, EGLSyncKHR sync)
CALL_HOOK_API_RET(eglDestroySyncKHR, dpy, sync)

HOOK_API_ENTRY(EGLint, eglClientWaitSyncKHR, EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
CALL_HOOK_API_RET(eglClientWaitSyncKHR, dpy, sync, flags, timeout)

HOOK_API_ENTRY(EGLBoolean, eglGetSyncAttribKHR, EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
CALL_HOOK_API_RET(eglGetSyncAttribKHR, dpy, sync, attribute, value)

/* EGL_KHR_reusable_sync */
HOOK_API_ENTRY(EGLBoolean, eglSignalSyncKHR, EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode)
CALL_HOOK_API_RET(eglSignalSyncKHR, dpy, sync, mode)

/* EGL_KHR_stream */
HOOK_API_ENTRY(EGLStreamKHR, eglCreateStreamKHR, EGLDisplay dpy, const EGLint *attrib_list)
CALL_HOOK_API_RET(eglCreateStreamKHR, dpy, attrib_list)

HOOK_API_ENTRY(EGLBoolean, eglDestroyStreamKHR, EGLDisplay dpy, EGLStreamKHR stream)
CALL_HOOK_API_RET(eglDestroyStreamKHR, dpy, stream)

HOOK_API_ENTRY(EGLBoolean, eglStreamAttribKHR, EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value)
CALL_HOOK_API_RET(eglStreamAttribKHR, dpy, stream, attribute, value)

HOOK_API_ENTRY(EGLBoolean, eglQueryStreamKHR, EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value)
CALL_HOOK_API_RET(eglQueryStreamKHR, dpy, stream, attribute, value)

HOOK_API_ENTRY(EGLBoolean, eglQueryStreamu64KHR, EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value)
CALL_HOOK_API_RET(eglQueryStreamu64KHR, dpy, stream, attribute, value)

/* EGL_KHR_stream_consumer_gltexture */
HOOK_API_ENTRY(EGLBoolean, eglStreamConsumerGLTextureExternalKHR, EGLDisplay dpy, EGLStreamKHR stream)
CALL_HOOK_API_RET(eglStreamConsumerGLTextureExternalKHR, dpy, stream)

HOOK_API_ENTRY(EGLBoolean, eglStreamConsumerAcquireKHR, EGLDisplay dpy, EGLStreamKHR stream)
CALL_HOOK_API_RET(eglStreamConsumerAcquireKHR, dpy, stream)

HOOK_API_ENTRY(EGLBoolean, eglStreamConsumerReleaseKHR, EGLDisplay dpy, EGLStreamKHR stream)
CALL_HOOK_API_RET(eglStreamConsumerReleaseKHR, dpy, stream)

/* EGL_KHR_stream_producer_eglsurface */
HOOK_API_ENTRY(EGLSurface, eglCreateStreamProducerSurfaceKHR, EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list)
CALL_HOOK_API_RET(eglCreateStreamProducerSurfaceKHR, dpy, config, stream, attrib_list)

/* EGL_KHR_stream_fifo */
HOOK_API_ENTRY(EGLBoolean, eglQueryStreamTimeKHR, EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value)
CALL_HOOK_API_RET(eglQueryStreamTimeKHR, dpy, stream, attribute, value)

/* EGL_KHR_stream_cross_process_fd */
HOOK_API_ENTRY(EGLNativeFileDescriptorKHR, eglGetStreamFileDescriptorKHR, EGLDisplay dpy, EGLStreamKHR stream)
CALL_HOOK_API_RET(eglGetStreamFileDescriptorKHR, dpy, stream)

HOOK_API_ENTRY(EGLStreamKHR, eglCreateStreamFromFileDescriptorKHR, EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor)
CALL_HOOK_API_RET(eglCreateStreamFromFileDescriptorKHR, dpy, file_descriptor)

/* EGL_KHR_wait_sync */
HOOK_API_ENTRY(EGLint, eglWaitSyncKHR, EGLDisplay dpy, EGLSyncKHR sync, EGLint flags)
CALL_HOOK_API_RET(eglWaitSyncKHR, dpy, sync, flags)

/* EGL_EXT_platform_base */
HOOK_API_ENTRY(EGLDisplay, eglGetPlatformDisplayEXT, EGLenum platform, void *native_display, const EGLint *attrib_list)
CALL_HOOK_API_RET(eglGetPlatformDisplayEXT, platform, native_display, attrib_list)

HOOK_API_ENTRY(EGLSurface, eglCreatePlatformWindowSurfaceEXT, EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list)
CALL_HOOK_API_RET(eglCreatePlatformWindowSurfaceEXT, dpy, config, native_window, attrib_list)

HOOK_API_ENTRY(EGLSurface, eglCreatePlatformPixmapSurfaceEXT, EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list)
CALL_HOOK_API_RET(eglCreatePlatformPixmapSurfaceEXT, dpy, config, native_pixmap, attrib_list)

/* EGL_KHR_swap_buffers_with_damage */
HOOK_API_ENTRY(EGLBoolean, eglSwapBuffersWithDamageKHR, EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects)
CALL_HOOK_API_RET(eglSwapBuffersWithDamageKHR, dpy, surface, rects, n_rects)

/* EGL_KHR_partial_update */
HOOK_API_ENTRY(EGLBoolean, eglSetDamageRegionKHR, EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects)
CALL_HOOK_API_RET(eglSetDamageRegionKHR, dpy, surface, rects, n_rects)

/* EglDupNativeFenceFDANDROID */
HOOK_API_ENTRY(EGLint, eglDupNativeFenceFDANDROID, EGLDisplay dpy, EGLSync sync)
CALL_HOOK_API_RET(eglDupNativeFenceFDANDROID, dpy, sync)

/* EglSetBlobCacheFuncsANDROID */
HOOK_API_ENTRY(void, eglSetBlobCacheFuncsANDROID, EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get)
CALL_HOOK_API(eglSetBlobCacheFuncsANDROID, dpy, set, get)

/* EGL_ANDROID_get_frame_timestamps */
HOOK_API_ENTRY(EGLBoolean, eglGetCompositorTimingSupportedANDROID, EGLDisplay dpy, EGLSurface surface, EGLint name)
CALL_HOOK_API_RET(eglGetCompositorTimingSupportedANDROID, dpy, surface, name)

HOOK_API_ENTRY(EGLBoolean, eglGetFrameTimestampSupportedANDROID, EGLDisplay dpy, EGLSurface surface, EGLint timestamp)
CALL_HOOK_API_RET(eglGetFrameTimestampSupportedANDROID, dpy, surface, timestamp)

/* EGL_ANDROID_presentation_time */
HOOK_API_ENTRY(EGLBoolean, eglPresentationTimeANDROID, EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time)
CALL_HOOK_API_RET(eglPresentationTimeANDROID, dpy, surface, time)

/* EGL_EXT_swap_buffers_with_damage */
HOOK_API_ENTRY(EGLBoolean, eglSwapBuffersWithDamageEXT, EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects)
CALL_HOOK_API_RET(eglSwapBuffersWithDamageEXT, dpy, surface, rects, n_rects)

/* EGL_ANDROID_get_native_client_buffer */
HOOK_API_ENTRY(EGLClientBuffer, eglGetNativeClientBufferANDROID, const struct AHardwareBuffer *buffer)
CALL_HOOK_API_RET(eglGetNativeClientBufferANDROID, buffer)

HOOK_API_ENTRY(EGLClientBuffer, eglGetNativeClientBufferOHOS, OH_NativeBuffer *buffer)
CALL_HOOK_API_RET(eglGetNativeClientBufferOHOS, buffer)