diff --git a/include/GL/eglew.h b/include/GL/eglew.h index 6d8cf65..dfe26da 100644 --- a/include/GL/eglew.h +++ b/include/GL/eglew.h @@ -695,6 +695,19 @@ typedef EGLBoolean ( * PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLS #endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */ +/* ---------------------- EGL_ANGLE_sync_control_rate ---------------------- */ + +#ifndef EGL_ANGLE_sync_control_rate +#define EGL_ANGLE_sync_control_rate 1 + +typedef EGLBoolean ( * PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint* numerator, EGLint* denominator); + +#define eglGetMscRateANGLE EGLEW_GET_FUN(__eglewGetMscRateANGLE) + +#define EGLEW_ANGLE_sync_control_rate EGLEW_GET_VAR(__EGLEW_ANGLE_sync_control_rate) + +#endif /* EGL_ANGLE_sync_control_rate */ + /* ---------------------- EGL_ANGLE_window_fixed_size ---------------------- */ #ifndef EGL_ANGLE_window_fixed_size @@ -2794,6 +2807,8 @@ EGLEW_FUN_EXPORT PFNEGLPRESENTATIONTIMEANDROIDPROC __eglewPresentationTimeANDROI EGLEW_FUN_EXPORT PFNEGLQUERYSURFACEPOINTERANGLEPROC __eglewQuerySurfacePointerANGLE; +EGLEW_FUN_EXPORT PFNEGLGETMSCRATEANGLEPROC __eglewGetMscRateANGLE; + EGLEW_FUN_EXPORT PFNEGLCLIENTSIGNALSYNCEXTPROC __eglewClientSignalSyncEXT; EGLEW_FUN_EXPORT PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC __eglewCompositorBindTexWindowEXT; @@ -2957,6 +2972,7 @@ EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_d3d_share_handle_client_buffer; EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_device_d3d; EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_query_surface_pointer; EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_surface_d3d_texture_2d_share_handle; +EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_sync_control_rate; EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_window_fixed_size; EGLEW_VAR_EXPORT GLboolean __EGLEW_ARM_image_format; EGLEW_VAR_EXPORT GLboolean __EGLEW_ARM_implicit_external_sync; diff --git a/src/glew.c b/src/glew.c index 8df2928..6673164 100644 --- a/src/glew.c +++ b/src/glew.c @@ -19539,6 +19539,8 @@ PFNEGLPRESENTATIONTIMEANDROIDPROC __eglewPresentationTimeANDROID = NULL; PFNEGLQUERYSURFACEPOINTERANGLEPROC __eglewQuerySurfacePointerANGLE = NULL; +PFNEGLGETMSCRATEANGLEPROC __eglewGetMscRateANGLE = NULL; + PFNEGLCLIENTSIGNALSYNCEXTPROC __eglewClientSignalSyncEXT = NULL; PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC __eglewCompositorBindTexWindowEXT = NULL; @@ -19702,6 +19704,7 @@ GLboolean __EGLEW_ANGLE_d3d_share_handle_client_buffer = GL_FALSE; GLboolean __EGLEW_ANGLE_device_d3d = GL_FALSE; GLboolean __EGLEW_ANGLE_query_surface_pointer = GL_FALSE; GLboolean __EGLEW_ANGLE_surface_d3d_texture_2d_share_handle = GL_FALSE; +GLboolean __EGLEW_ANGLE_sync_control_rate = GL_FALSE; GLboolean __EGLEW_ANGLE_window_fixed_size = GL_FALSE; GLboolean __EGLEW_ARM_image_format = GL_FALSE; GLboolean __EGLEW_ARM_implicit_external_sync = GL_FALSE; @@ -20037,6 +20040,19 @@ static GLboolean _glewInit_EGL_ANGLE_query_surface_pointer () #endif /* EGL_ANGLE_query_surface_pointer */ +#ifdef EGL_ANGLE_sync_control_rate + +static GLboolean _glewInit_EGL_ANGLE_sync_control_rate () +{ + GLboolean r = GL_FALSE; + + r = ((eglGetMscRateANGLE = (PFNEGLGETMSCRATEANGLEPROC)glewGetProcAddress((const GLubyte*)"eglGetMscRateANGLE")) == NULL) || r; + + return r; +} + +#endif /* EGL_ANGLE_sync_control_rate */ + #ifdef EGL_EXT_client_sync static GLboolean _glewInit_EGL_EXT_client_sync () @@ -20776,6 +20792,10 @@ GLenum eglewInit (EGLDisplay display) #ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle EGLEW_ANGLE_surface_d3d_texture_2d_share_handle = _glewSearchExtension("EGL_ANGLE_surface_d3d_texture_2d_share_handle", extStart, extEnd); #endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */ +#ifdef EGL_ANGLE_sync_control_rate + EGLEW_ANGLE_sync_control_rate = _glewSearchExtension("EGL_ANGLE_sync_control_rate", extStart, extEnd); + if (glewExperimental || EGLEW_ANGLE_sync_control_rate) EGLEW_ANGLE_sync_control_rate = !_glewInit_EGL_ANGLE_sync_control_rate(); +#endif /* EGL_ANGLE_sync_control_rate */ #ifdef EGL_ANGLE_window_fixed_size EGLEW_ANGLE_window_fixed_size = _glewSearchExtension("EGL_ANGLE_window_fixed_size", extStart, extEnd); #endif /* EGL_ANGLE_window_fixed_size */ @@ -31251,6 +31271,13 @@ GLboolean eglewIsSupported (const char* name) continue; } #endif +#ifdef EGL_ANGLE_sync_control_rate + if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_control_rate", 17)) + { + ret = EGLEW_ANGLE_sync_control_rate; + continue; + } +#endif #ifdef EGL_ANGLE_window_fixed_size if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_fixed_size", 17)) { diff --git a/src/glewinfo.c b/src/glewinfo.c index 268f14c..146773e 100644 --- a/src/glewinfo.c +++ b/src/glewinfo.c @@ -12009,6 +12009,17 @@ static void _glewInfo_EGL_ANGLE_surface_d3d_texture_2d_share_handle (void) #endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */ +#ifdef EGL_ANGLE_sync_control_rate + +static void _glewInfo_EGL_ANGLE_sync_control_rate (void) +{ + GLboolean fi = glewPrintExt("EGL_ANGLE_sync_control_rate", EGLEW_ANGLE_sync_control_rate, eglewIsSupported("EGL_ANGLE_sync_control_rate"), eglewGetExtension("EGL_ANGLE_sync_control_rate")); + + glewInfoFunc(fi, "eglGetMscRateANGLE", eglGetMscRateANGLE == NULL); +} + +#endif /* EGL_ANGLE_sync_control_rate */ + #ifdef EGL_ANGLE_window_fixed_size static void _glewInfo_EGL_ANGLE_window_fixed_size (void) @@ -18187,6 +18198,9 @@ static void eglewInfo () #ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle _glewInfo_EGL_ANGLE_surface_d3d_texture_2d_share_handle(); #endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */ +#ifdef EGL_ANGLE_sync_control_rate + _glewInfo_EGL_ANGLE_sync_control_rate(); +#endif /* EGL_ANGLE_sync_control_rate */ #ifdef EGL_ANGLE_window_fixed_size _glewInfo_EGL_ANGLE_window_fixed_size(); #endif /* EGL_ANGLE_window_fixed_size */