Fetch gl.xml, egl.xml from Github repos

SVN repository containing gl.xml and egl.xml is no longer updated.
The new locations for these files are OpenGL-Registry and
EGL-Registry repositories on Github.
Adjust fetching scripts to use the new locations.

Components: Framework
Affects: headers generation

Change-Id: Ic091a46c636d446b6a4751bd3b797bcd19f90014
diff --git a/android/cts/master/egl-master.txt b/android/cts/master/egl-master.txt
index a6b4a24..93332e8 100644
--- a/android/cts/master/egl-master.txt
+++ b/android/cts/master/egl-master.txt
@@ -2447,6 +2447,7 @@
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_base_instance
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_blend_func_extended
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_buffer_storage
+dEQP-EGL.functional.get_proc_address.extension.gl_ext_clear_texture
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_copy_image
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_debug_label
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_debug_marker
@@ -2455,20 +2456,26 @@
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_draw_buffers_indexed
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_draw_elements_base_vertex
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_draw_instanced
+dEQP-EGL.functional.get_proc_address.extension.gl_ext_draw_transform_feedback
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_geometry_shader
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_instanced_arrays
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_multi_draw_indirect
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_multiview_draw_buffers
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_occlusion_query_boolean
+dEQP-EGL.functional.get_proc_address.extension.gl_ext_polygon_offset_clamp
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_primitive_bounding_box
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_raster_multisample
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_separate_shader_objects
+dEQP-EGL.functional.get_proc_address.extension.gl_ext_shader_pixel_local_storage2
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_sparse_texture
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_tessellation_shader
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_texture_border_clamp
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_texture_buffer
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_texture_filter_minmax
 dEQP-EGL.functional.get_proc_address.extension.gl_ext_texture_view
+dEQP-EGL.functional.get_proc_address.extension.gl_ext_window_rectangles
+dEQP-EGL.functional.get_proc_address.extension.gl_img_bindless_texture
+dEQP-EGL.functional.get_proc_address.extension.gl_img_framebuffer_downsample
 dEQP-EGL.functional.get_proc_address.extension.gl_intel_framebuffer_cmaa
 dEQP-EGL.functional.get_proc_address.extension.gl_intel_performance_query
 dEQP-EGL.functional.get_proc_address.extension.gl_khr_blend_equation_advanced
@@ -2478,6 +2485,7 @@
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_blend_equation_advanced
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_conditional_render
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_conservative_raster
+dEQP-EGL.functional.get_proc_address.extension.gl_nv_conservative_raster_pre_snap_triangles
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_copy_buffer
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_coverage_sample
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_draw_buffers
@@ -2486,6 +2494,7 @@
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_framebuffer_blit
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_framebuffer_mixed_samples
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_framebuffer_multisample
+dEQP-EGL.functional.get_proc_address.extension.gl_nv_gpu_shader5
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_instanced_arrays
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_internalformat_sample_query
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_non_square_matrices
@@ -2494,6 +2503,7 @@
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_read_buffer
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_sample_locations
 dEQP-EGL.functional.get_proc_address.extension.gl_nv_viewport_array
+dEQP-EGL.functional.get_proc_address.extension.gl_nv_viewport_swizzle
 dEQP-EGL.functional.get_proc_address.extension.gl_oes_copy_image
 dEQP-EGL.functional.get_proc_address.extension.gl_oes_draw_buffers_indexed
 dEQP-EGL.functional.get_proc_address.extension.gl_oes_draw_elements_base_vertex
@@ -2507,8 +2517,12 @@
 dEQP-EGL.functional.get_proc_address.extension.gl_oes_texture_buffer
 dEQP-EGL.functional.get_proc_address.extension.gl_oes_texture_storage_multisample_2d_array
 dEQP-EGL.functional.get_proc_address.extension.gl_oes_texture_view
+dEQP-EGL.functional.get_proc_address.extension.gl_oes_viewport_array
 dEQP-EGL.functional.get_proc_address.extension.gl_ovr_multiview
+dEQP-EGL.functional.get_proc_address.extension.gl_ovr_multiview_multisampled_render_to_texture
 dEQP-EGL.functional.get_proc_address.extension.gl_qcom_alpha_test
+dEQP-EGL.functional.get_proc_address.extension.gl_qcom_framebuffer_foveated
+dEQP-EGL.functional.get_proc_address.extension.gl_nv_draw_vulkan_image
 dEQP-EGL.functional.get_proc_address.core.egl
 dEQP-EGL.functional.get_proc_address.core.gles
 dEQP-EGL.functional.get_proc_address.core.gles2
diff --git a/framework/egl/egluCallLogWrapper.inl b/framework/egl/egluCallLogWrapper.inl
index ee49459..f977b56 100644
--- a/framework/egl/egluCallLogWrapper.inl
+++ b/framework/egl/egluCallLogWrapper.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 
 eglw::EGLBoolean CallLogWrapper::eglBindAPI (eglw::EGLenum api)
diff --git a/framework/egl/egluCallLogWrapperApi.inl b/framework/egl/egluCallLogWrapperApi.inl
index 99df24b..a61493a 100644
--- a/framework/egl/egluCallLogWrapperApi.inl
+++ b/framework/egl/egluCallLogWrapperApi.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 eglw::EGLBoolean								eglBindAPI							(eglw::EGLenum api);
 eglw::EGLBoolean								eglBindTexImage						(eglw::EGLDisplay dpy, eglw::EGLSurface surface, eglw::EGLint buffer);
diff --git a/framework/egl/egluStaticES20Library.inl b/framework/egl/egluStaticES20Library.inl
index fe4f4dc..bfc637c 100644
--- a/framework/egl/egluStaticES20Library.inl
+++ b/framework/egl/egluStaticES20Library.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 	{ "glActiveTexture",						(deFunctionPtr)glActiveTexture },
 	{ "glAttachShader",							(deFunctionPtr)glAttachShader },
diff --git a/framework/egl/egluStaticES30Library.inl b/framework/egl/egluStaticES30Library.inl
index c3cbc28..3f6a7e5 100644
--- a/framework/egl/egluStaticES30Library.inl
+++ b/framework/egl/egluStaticES30Library.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 	{ "glActiveTexture",						(deFunctionPtr)glActiveTexture },
 	{ "glAttachShader",							(deFunctionPtr)glAttachShader },
diff --git a/framework/egl/egluStrUtil.inl b/framework/egl/egluStrUtil.inl
index 2c563e5..b081316 100644
--- a/framework/egl/egluStrUtil.inl
+++ b/framework/egl/egluStrUtil.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 
 const char* getBooleanName (int value)
diff --git a/framework/egl/egluStrUtilPrototypes.inl b/framework/egl/egluStrUtilPrototypes.inl
index 839837f..97a43a9 100644
--- a/framework/egl/egluStrUtilPrototypes.inl
+++ b/framework/egl/egluStrUtilPrototypes.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 const char*							getBooleanName				(int value);
 const char*							getBoolDontCareName			(int value);
diff --git a/framework/egl/wrapper/eglwApi.inl b/framework/egl/wrapper/eglwApi.inl
index fadb2a9..2d26cb9 100644
--- a/framework/egl/wrapper/eglwApi.inl
+++ b/framework/egl/wrapper/eglwApi.inl
@@ -1,7 +1,11 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
+<<<<<<< HEAD
  * Generated from Khronos EGL API description (egl.xml) revision 28861.
+=======
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
+>>>>>>> 2528a63a9... Fetch gl.xml, egl.xml from Github repos
  */
 #define										eglBindAPI							eglwBindAPI
 #define										eglBindTexImage						eglwBindTexImage
diff --git a/framework/egl/wrapper/eglwEnums.inl b/framework/egl/wrapper/eglwEnums.inl
index edb58c5..1822da9 100644
--- a/framework/egl/wrapper/eglwEnums.inl
+++ b/framework/egl/wrapper/eglwEnums.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 #define EGL_PBUFFER_BIT										0x0001
 #define EGL_PIXMAP_BIT										0x0002
diff --git a/framework/egl/wrapper/eglwEnumsC.inl b/framework/egl/wrapper/eglwEnumsC.inl
new file mode 100644
index 0000000..c3ab2ef
--- /dev/null
+++ b/framework/egl/wrapper/eglwEnumsC.inl
@@ -0,0 +1,269 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ *
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
+ */
+#define EGL_PBUFFER_BIT										0x0001
+#define EGL_PIXMAP_BIT										0x0002
+#define EGL_WINDOW_BIT										0x0004
+#define EGL_VG_COLORSPACE_LINEAR_BIT						0x0020
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT							0x0040
+#define EGL_LOCK_SURFACE_BIT_KHR							0x0080
+#define EGL_OPTIMAL_FORMAT_BIT_KHR							0x0100
+#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT						0x0200
+#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT						0x0400
+#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR					0x1000
+#define EGL_OPENGL_ES_BIT									0x0001
+#define EGL_OPENVG_BIT										0x0002
+#define EGL_OPENGL_ES2_BIT									0x0004
+#define EGL_OPENGL_BIT										0x0008
+#define EGL_OPENGL_ES3_BIT									0x00000040
+#define EGL_OPENGL_ES3_BIT_KHR								0x00000040
+#define EGL_READ_SURFACE_BIT_KHR							0x0001
+#define EGL_WRITE_SURFACE_BIT_KHR							0x0002
+#define EGL_SYNC_FLUSH_COMMANDS_BIT							0x0001
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR						0x0001
+#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR					0x00000001
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR		0x00000002
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR			0x00000004
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT					0x00000001
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR				0x00000001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT		0x00000002
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR	0x00000002
+#define EGL_FALSE											0
+#define EGL_TRUE											1
+#define EGL_DONT_CARE										((EGLint)-1)
+#define EGL_UNKNOWN											((EGLint)-1)
+#define EGL_NO_CONTEXT										((EGLContext)0)
+#define EGL_NO_DISPLAY										((EGLDisplay)0)
+#define EGL_NO_IMAGE										((EGLImage)0)
+#define EGL_NO_IMAGE_KHR									((EGLImageKHR)0)
+#define EGL_DEFAULT_DISPLAY									((EGLNativeDisplayType)0)
+#define EGL_NO_SURFACE										((EGLSurface)0)
+#define EGL_NO_SYNC											((EGLSync)0)
+#define EGL_NO_SYNC_KHR										((EGLSyncKHR)0)
+#define EGL_DISPLAY_SCALING									10000
+#define EGL_FOREVER											0xFFFFFFFFFFFFFFFFull
+#define EGL_FOREVER_KHR										0xFFFFFFFFFFFFFFFFull
+#define EGL_SUCCESS											0x3000
+#define EGL_NOT_INITIALIZED									0x3001
+#define EGL_BAD_ACCESS										0x3002
+#define EGL_BAD_ALLOC										0x3003
+#define EGL_BAD_ATTRIBUTE									0x3004
+#define EGL_BAD_CONFIG										0x3005
+#define EGL_BAD_CONTEXT										0x3006
+#define EGL_BAD_CURRENT_SURFACE								0x3007
+#define EGL_BAD_DISPLAY										0x3008
+#define EGL_BAD_MATCH										0x3009
+#define EGL_BAD_NATIVE_PIXMAP								0x300A
+#define EGL_BAD_NATIVE_WINDOW								0x300B
+#define EGL_BAD_PARAMETER									0x300C
+#define EGL_BAD_SURFACE										0x300D
+#define EGL_CONTEXT_LOST									0x300E
+#define EGL_BUFFER_SIZE										0x3020
+#define EGL_ALPHA_SIZE										0x3021
+#define EGL_BLUE_SIZE										0x3022
+#define EGL_GREEN_SIZE										0x3023
+#define EGL_RED_SIZE										0x3024
+#define EGL_DEPTH_SIZE										0x3025
+#define EGL_STENCIL_SIZE									0x3026
+#define EGL_CONFIG_CAVEAT									0x3027
+#define EGL_CONFIG_ID										0x3028
+#define EGL_LEVEL											0x3029
+#define EGL_MAX_PBUFFER_HEIGHT								0x302A
+#define EGL_MAX_PBUFFER_PIXELS								0x302B
+#define EGL_MAX_PBUFFER_WIDTH								0x302C
+#define EGL_NATIVE_RENDERABLE								0x302D
+#define EGL_NATIVE_VISUAL_ID								0x302E
+#define EGL_NATIVE_VISUAL_TYPE								0x302F
+#define EGL_SAMPLES											0x3031
+#define EGL_SAMPLE_BUFFERS									0x3032
+#define EGL_SURFACE_TYPE									0x3033
+#define EGL_TRANSPARENT_TYPE								0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE							0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE							0x3036
+#define EGL_TRANSPARENT_RED_VALUE							0x3037
+#define EGL_NONE											0x3038
+#define EGL_BIND_TO_TEXTURE_RGB								0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA							0x303A
+#define EGL_MIN_SWAP_INTERVAL								0x303B
+#define EGL_MAX_SWAP_INTERVAL								0x303C
+#define EGL_LUMINANCE_SIZE									0x303D
+#define EGL_ALPHA_MASK_SIZE									0x303E
+#define EGL_COLOR_BUFFER_TYPE								0x303F
+#define EGL_RENDERABLE_TYPE									0x3040
+#define EGL_MATCH_NATIVE_PIXMAP								0x3041
+#define EGL_CONFORMANT										0x3042
+#define EGL_MATCH_FORMAT_KHR								0x3043
+#define EGL_SLOW_CONFIG										0x3050
+#define EGL_NON_CONFORMANT_CONFIG							0x3051
+#define EGL_TRANSPARENT_RGB									0x3052
+#define EGL_VENDOR											0x3053
+#define EGL_VERSION											0x3054
+#define EGL_EXTENSIONS										0x3055
+#define EGL_HEIGHT											0x3056
+#define EGL_WIDTH											0x3057
+#define EGL_LARGEST_PBUFFER									0x3058
+#define EGL_DRAW											0x3059
+#define EGL_READ											0x305A
+#define EGL_CORE_NATIVE_ENGINE								0x305B
+#define EGL_NO_TEXTURE										0x305C
+#define EGL_TEXTURE_RGB										0x305D
+#define EGL_TEXTURE_RGBA									0x305E
+#define EGL_TEXTURE_2D										0x305F
+#define EGL_TEXTURE_FORMAT									0x3080
+#define EGL_TEXTURE_TARGET									0x3081
+#define EGL_MIPMAP_TEXTURE									0x3082
+#define EGL_MIPMAP_LEVEL									0x3083
+#define EGL_BACK_BUFFER										0x3084
+#define EGL_SINGLE_BUFFER									0x3085
+#define EGL_RENDER_BUFFER									0x3086
+#define EGL_COLORSPACE										0x3087
+#define EGL_COLORSPACE										0x3087
+#define EGL_ALPHA_FORMAT									0x3088
+#define EGL_ALPHA_FORMAT									0x3088
+#define EGL_COLORSPACE_sRGB									0x3089
+#define EGL_GL_COLORSPACE_SRGB								0x3089
+#define EGL_VG_COLORSPACE_sRGB								0x3089
+#define EGL_COLORSPACE_LINEAR								0x308A
+#define EGL_GL_COLORSPACE_LINEAR							0x308A
+#define EGL_VG_COLORSPACE_LINEAR							0x308A
+#define EGL_ALPHA_FORMAT_NONPRE								0x308B
+#define EGL_ALPHA_FORMAT_NONPRE								0x308B
+#define EGL_ALPHA_FORMAT_PRE								0x308C
+#define EGL_ALPHA_FORMAT_PRE								0x308C
+#define EGL_CLIENT_APIS										0x308D
+#define EGL_RGB_BUFFER										0x308E
+#define EGL_LUMINANCE_BUFFER								0x308F
+#define EGL_HORIZONTAL_RESOLUTION							0x3090
+#define EGL_VERTICAL_RESOLUTION								0x3091
+#define EGL_PIXEL_ASPECT_RATIO								0x3092
+#define EGL_SWAP_BEHAVIOR									0x3093
+#define EGL_BUFFER_PRESERVED								0x3094
+#define EGL_BUFFER_DESTROYED								0x3095
+#define EGL_OPENVG_IMAGE									0x3096
+#define EGL_CONTEXT_CLIENT_TYPE								0x3097
+#define EGL_CONTEXT_CLIENT_VERSION							0x3098
+#define EGL_CONTEXT_MAJOR_VERSION							0x3098
+#define EGL_CONTEXT_MAJOR_VERSION_KHR						0x3098
+#define EGL_MULTISAMPLE_RESOLVE								0x3099
+#define EGL_MULTISAMPLE_RESOLVE_DEFAULT						0x309A
+#define EGL_MULTISAMPLE_RESOLVE_BOX							0x309B
+#define EGL_CL_EVENT_HANDLE									0x309C
+#define EGL_GL_COLORSPACE									0x309D
+#define EGL_OPENGL_ES_API									0x30A0
+#define EGL_OPENVG_API										0x30A1
+#define EGL_OPENGL_API										0x30A2
+#define EGL_GL_TEXTURE_2D									0x30B1
+#define EGL_GL_TEXTURE_2D_KHR								0x30B1
+#define EGL_GL_TEXTURE_3D									0x30B2
+#define EGL_GL_TEXTURE_3D_KHR								0x30B2
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X					0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR				0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X					0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR				0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y					0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR				0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y					0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR				0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z					0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR				0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z					0x30B8
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR				0x30B8
+#define EGL_GL_RENDERBUFFER									0x30B9
+#define EGL_GL_RENDERBUFFER_KHR								0x30B9
+#define EGL_GL_TEXTURE_LEVEL								0x30BC
+#define EGL_GL_TEXTURE_LEVEL_KHR							0x30BC
+#define EGL_GL_TEXTURE_ZOFFSET								0x30BD
+#define EGL_GL_TEXTURE_ZOFFSET_KHR							0x30BD
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT				0x30BF
+#define EGL_FORMAT_RGB_565_EXACT_KHR						0x30C0
+#define EGL_FORMAT_RGB_565_KHR								0x30C1
+#define EGL_FORMAT_RGBA_8888_EXACT_KHR						0x30C2
+#define EGL_FORMAT_RGBA_8888_KHR							0x30C3
+#define EGL_MAP_PRESERVE_PIXELS_KHR							0x30C4
+#define EGL_LOCK_USAGE_HINT_KHR								0x30C5
+#define EGL_BITMAP_POINTER_KHR								0x30C6
+#define EGL_BITMAP_PITCH_KHR								0x30C7
+#define EGL_BITMAP_ORIGIN_KHR								0x30C8
+#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR						0x30C9
+#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR					0x30CA
+#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR					0x30CB
+#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR					0x30CC
+#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR				0x30CD
+#define EGL_LOWER_LEFT_KHR									0x30CE
+#define EGL_UPPER_LEFT_KHR									0x30CF
+#define EGL_IMAGE_PRESERVED									0x30D2
+#define EGL_IMAGE_PRESERVED_KHR								0x30D2
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE					0x30F0
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR				0x30F0
+#define EGL_SYNC_STATUS										0x30F1
+#define EGL_SYNC_STATUS_KHR									0x30F1
+#define EGL_SIGNALED										0x30F2
+#define EGL_SIGNALED_KHR									0x30F2
+#define EGL_UNSIGNALED										0x30F3
+#define EGL_UNSIGNALED_KHR									0x30F3
+#define EGL_TIMEOUT_EXPIRED									0x30F5
+#define EGL_TIMEOUT_EXPIRED_KHR								0x30F5
+#define EGL_CONDITION_SATISFIED								0x30F6
+#define EGL_CONDITION_SATISFIED_KHR							0x30F6
+#define EGL_SYNC_TYPE										0x30F7
+#define EGL_SYNC_TYPE_KHR									0x30F7
+#define EGL_SYNC_CONDITION									0x30F8
+#define EGL_SYNC_CONDITION_KHR								0x30F8
+#define EGL_SYNC_FENCE										0x30F9
+#define EGL_SYNC_FENCE_KHR									0x30F9
+#define EGL_SYNC_REUSABLE_KHR								0x30FA
+#define EGL_CONTEXT_MINOR_VERSION							0x30FB
+#define EGL_CONTEXT_MINOR_VERSION_KHR						0x30FB
+#define EGL_CONTEXT_FLAGS_KHR								0x30FC
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK						0x30FD
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR					0x30FD
+#define EGL_SYNC_CL_EVENT									0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE							0x30FF
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT	0x3138
+#define EGL_BUFFER_AGE_KHR									0x313D
+#define EGL_BUFFER_AGE_EXT									0x313D
+#define EGL_NATIVE_BUFFER_ANDROID							0x3140
+#define EGL_CONTEXT_OPENGL_DEBUG							0x31B0
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE				0x31B1
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS					0x31B2
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR	0x31BD
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR	0x31BD
+#define EGL_NO_RESET_NOTIFICATION							0x31BE
+#define EGL_NO_RESET_NOTIFICATION_KHR						0x31BE
+#define EGL_NO_RESET_NOTIFICATION_EXT						0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET							0x31BF
+#define EGL_LOSE_CONTEXT_ON_RESET_KHR						0x31BF
+#define EGL_LOSE_CONTEXT_ON_RESET_EXT						0x31BF
+#define EGL_PLATFORM_X11_EXT								0x31D5
+#define EGL_PLATFORM_X11_SCREEN_EXT							0x31D6
+#define EGL_PLATFORM_WAYLAND_KHR							0x31D8
+#define EGL_YUV_BUFFER_EXT									0x3300
+#define EGL_YUV_ORDER_EXT									0x3301
+#define EGL_YUV_ORDER_YUV_EXT								0x3302
+#define EGL_YUV_ORDER_YVU_EXT								0x3303
+#define EGL_YUV_ORDER_YUYV_EXT								0x3304
+#define EGL_YUV_ORDER_UYVY_EXT								0x3305
+#define EGL_YUV_ORDER_YVYU_EXT								0x3306
+#define EGL_YUV_ORDER_VYUY_EXT								0x3307
+#define EGL_YUV_ORDER_AYUV_EXT								0x3308
+#define EGL_YUV_CSC_STANDARD_EXT							0x330A
+#define EGL_YUV_CSC_STANDARD_601_EXT						0x330B
+#define EGL_YUV_CSC_STANDARD_709_EXT						0x330C
+#define EGL_YUV_CSC_STANDARD_2020_EXT						0x330D
+#define EGL_YUV_NUMBER_OF_PLANES_EXT						0x3311
+#define EGL_YUV_SUBSAMPLE_EXT								0x3312
+#define EGL_YUV_SUBSAMPLE_4_2_0_EXT							0x3313
+#define EGL_YUV_SUBSAMPLE_4_2_2_EXT							0x3314
+#define EGL_YUV_SUBSAMPLE_4_4_4_EXT							0x3315
+#define EGL_YUV_DEPTH_RANGE_EXT								0x3317
+#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT						0x3318
+#define EGL_YUV_DEPTH_RANGE_FULL_EXT						0x3319
+#define EGL_YUV_PLANE_BPP_EXT								0x331A
+#define EGL_YUV_PLANE_BPP_0_EXT								0x331B
+#define EGL_YUV_PLANE_BPP_8_EXT								0x331C
+#define EGL_YUV_PLANE_BPP_10_EXT							0x331D
+#define EGL_COLOR_COMPONENT_TYPE_EXT						0x3339
+#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT					0x333A
+#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT					0x333B
diff --git a/framework/egl/wrapper/eglwFuncPtrLibraryDecl.inl b/framework/egl/wrapper/eglwFuncPtrLibraryDecl.inl
index e7d1327..e45b2f6 100644
--- a/framework/egl/wrapper/eglwFuncPtrLibraryDecl.inl
+++ b/framework/egl/wrapper/eglwFuncPtrLibraryDecl.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 EGLBoolean									bindAPI							(EGLenum api) const;
 EGLBoolean									bindTexImage					(EGLDisplay dpy, EGLSurface surface, EGLint buffer) const;
diff --git a/framework/egl/wrapper/eglwFuncPtrLibraryImpl.inl b/framework/egl/wrapper/eglwFuncPtrLibraryImpl.inl
index 1678c71..66ea5f8 100644
--- a/framework/egl/wrapper/eglwFuncPtrLibraryImpl.inl
+++ b/framework/egl/wrapper/eglwFuncPtrLibraryImpl.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 
 EGLBoolean FuncPtrLibrary::bindAPI (EGLenum api) const
diff --git a/framework/egl/wrapper/eglwFunctionTypes.inl b/framework/egl/wrapper/eglwFunctionTypes.inl
index d57105e..2be3ea9 100644
--- a/framework/egl/wrapper/eglwFunctionTypes.inl
+++ b/framework/egl/wrapper/eglwFunctionTypes.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 typedef EGLW_APICALL EGLBoolean									(EGLW_APIENTRY* eglBindAPIFunc)							(EGLenum api);
 typedef EGLW_APICALL EGLBoolean									(EGLW_APIENTRY* eglBindTexImageFunc)					(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
diff --git a/framework/egl/wrapper/eglwFunctions.inl b/framework/egl/wrapper/eglwFunctions.inl
index af0d1b2..d5068e9 100644
--- a/framework/egl/wrapper/eglwFunctions.inl
+++ b/framework/egl/wrapper/eglwFunctions.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 eglBindAPIFunc							bindAPI;
 eglBindTexImageFunc						bindTexImage;
diff --git a/framework/egl/wrapper/eglwImpl.inl b/framework/egl/wrapper/eglwImpl.inl
new file mode 100644
index 0000000..9fd4f35
--- /dev/null
+++ b/framework/egl/wrapper/eglwImpl.inl
@@ -0,0 +1,357 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ *
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
+ */
+
+EGLBoolean eglwBindAPI (EGLenum api)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->bindAPI(api);
+}
+
+EGLBoolean eglwBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->bindTexImage(dpy, surface, buffer);
+}
+
+EGLBoolean eglwChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->chooseConfig(dpy, attrib_list, configs, config_size, num_config);
+}
+
+EGLint eglwClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLint)0;
+	return egl->clientWaitSync(dpy, sync, flags, timeout);
+}
+
+EGLBoolean eglwCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->copyBuffers(dpy, surface, (void*)target);
+}
+
+EGLContext eglwCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLContext)0;
+	return egl->createContext(dpy, config, share_context, attrib_list);
+}
+
+EGLImage eglwCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLImage)0;
+	return egl->createImage(dpy, ctx, target, buffer, attrib_list);
+}
+
+EGLSurface eglwCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSurface)0;
+	return egl->createPbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
+}
+
+EGLSurface eglwCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSurface)0;
+	return egl->createPbufferSurface(dpy, config, attrib_list);
+}
+
+EGLSurface eglwCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSurface)0;
+	return egl->createPixmapSurface(dpy, config, (void*)pixmap, attrib_list);
+}
+
+EGLSurface eglwCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSurface)0;
+	return egl->createPlatformPixmapSurface(dpy, config, native_pixmap, attrib_list);
+}
+
+EGLSurface eglwCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSurface)0;
+	return egl->createPlatformWindowSurface(dpy, config, native_window, attrib_list);
+}
+
+EGLSync eglwCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSync)0;
+	return egl->createSync(dpy, type, attrib_list);
+}
+
+EGLSurface eglwCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSurface)0;
+	return egl->createWindowSurface(dpy, config, (void*)win, attrib_list);
+}
+
+EGLBoolean eglwDestroyContext (EGLDisplay dpy, EGLContext ctx)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->destroyContext(dpy, ctx);
+}
+
+EGLBoolean eglwDestroyImage (EGLDisplay dpy, EGLImage image)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->destroyImage(dpy, image);
+}
+
+EGLBoolean eglwDestroySurface (EGLDisplay dpy, EGLSurface surface)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->destroySurface(dpy, surface);
+}
+
+EGLBoolean eglwDestroySync (EGLDisplay dpy, EGLSync sync)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->destroySync(dpy, sync);
+}
+
+EGLBoolean eglwGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->getConfigAttrib(dpy, config, attribute, value);
+}
+
+EGLBoolean eglwGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->getConfigs(dpy, configs, config_size, num_config);
+}
+
+EGLContext eglwGetCurrentContext (void)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLContext)0;
+	return egl->getCurrentContext();
+}
+
+EGLDisplay eglwGetCurrentDisplay (void)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLDisplay)0;
+	return egl->getCurrentDisplay();
+}
+
+EGLSurface eglwGetCurrentSurface (EGLint readdraw)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSurface)0;
+	return egl->getCurrentSurface(readdraw);
+}
+
+EGLDisplay eglwGetDisplay (EGLNativeDisplayType display_id)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLDisplay)0;
+	return egl->getDisplay((void*)display_id);
+}
+
+EGLint eglwGetError (void)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLint)0;
+	return egl->getError();
+}
+
+EGLDisplay eglwGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLDisplay)0;
+	return egl->getPlatformDisplay(platform, native_display, attrib_list);
+}
+
+__eglMustCastToProperFunctionPointerType eglwGetProcAddress (const char *procname)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (__eglMustCastToProperFunctionPointerType)0;
+	return egl->getProcAddress(procname);
+}
+
+EGLBoolean eglwGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->getSyncAttrib(dpy, sync, attribute, value);
+}
+
+EGLBoolean eglwInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->initialize(dpy, major, minor);
+}
+
+EGLBoolean eglwMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->makeCurrent(dpy, draw, read, ctx);
+}
+
+EGLenum eglwQueryAPI (void)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLenum)0;
+	return egl->queryAPI();
+}
+
+EGLBoolean eglwQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->queryContext(dpy, ctx, attribute, value);
+}
+
+const char * eglwQueryString (EGLDisplay dpy, EGLint name)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (const char *)0;
+	return egl->queryString(dpy, name);
+}
+
+EGLBoolean eglwQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->querySurface(dpy, surface, attribute, value);
+}
+
+EGLBoolean eglwReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->releaseTexImage(dpy, surface, buffer);
+}
+
+EGLBoolean eglwReleaseThread (void)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->releaseThread();
+}
+
+EGLBoolean eglwSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->surfaceAttrib(dpy, surface, attribute, value);
+}
+
+EGLBoolean eglwSwapBuffers (EGLDisplay dpy, EGLSurface surface)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->swapBuffers(dpy, surface);
+}
+
+EGLBoolean eglwSwapInterval (EGLDisplay dpy, EGLint interval)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->swapInterval(dpy, interval);
+}
+
+EGLBoolean eglwTerminate (EGLDisplay dpy)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->terminate(dpy);
+}
+
+EGLBoolean eglwWaitClient (void)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->waitClient();
+}
+
+EGLBoolean eglwWaitGL (void)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->waitGL();
+}
+
+EGLBoolean eglwWaitNative (EGLint engine)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->waitNative(engine);
+}
+
+EGLBoolean eglwWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->waitSync(dpy, sync, flags);
+}
diff --git a/framework/egl/wrapper/eglwImplExt.inl b/framework/egl/wrapper/eglwImplExt.inl
new file mode 100644
index 0000000..43fcad1
--- /dev/null
+++ b/framework/egl/wrapper/eglwImplExt.inl
@@ -0,0 +1,125 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ *
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
+ */
+
+EGLint eglwClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
+{
+									const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLint)0;
+		return egl->clientWaitSyncKHR(dpy, sync, flags, timeout);
+}
+
+EGLImageKHR eglwCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLImageKHR)0;
+	return egl->createImageKHR(dpy, ctx, target, buffer, attrib_list);
+}
+
+EGLSurface eglwCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSurface)0;
+	return egl->createPlatformPixmapSurfaceEXT(dpy, config, native_pixmap, attrib_list);
+}
+
+EGLSurface eglwCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list)
+{
+	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSurface)0;
+	return egl->createPlatformWindowSurfaceEXT(dpy, config, native_window, attrib_list);
+}
+
+EGLSyncKHR eglwCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
+{
+												const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLSyncKHR)0;
+	return egl->createSyncKHR(dpy, type, attrib_list);
+}
+
+EGLBoolean eglwDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image)
+{
+																	const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->destroyImageKHR(dpy, image);
+}
+
+EGLBoolean eglwDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync)
+{
+																		const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->destroySyncKHR(dpy, sync);
+}
+
+EGLDisplay eglwGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list)
+{
+							const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLDisplay)0;
+	return egl->getPlatformDisplayEXT(platform, native_display, attrib_list);
+}
+
+EGLBoolean eglwGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
+{
+									const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->getSyncAttribKHR(dpy, sync, attribute, value);
+}
+
+EGLBoolean eglwLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list)
+{
+										const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->lockSurfaceKHR(dpy, surface, attrib_list);
+}
+
+EGLBoolean eglwSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects)
+{
+								const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->setDamageRegionKHR(dpy, surface, rects, n_rects);
+}
+
+EGLBoolean eglwSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode)
+{
+														const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->signalSyncKHR(dpy, sync, mode);
+}
+
+EGLBoolean eglwSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects)
+{
+							const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->swapBuffersWithDamageKHR(dpy, surface, rects, n_rects);
+}
+
+EGLBoolean eglwUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface)
+{
+																const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLBoolean)0;
+	return egl->unlockSurfaceKHR(dpy, surface);
+}
+
+EGLint eglwWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags)
+{
+																const eglw::Library* egl = eglw::getCurrentThreadLibrary();
+	if (!egl)
+		return (EGLint)0;
+		return egl->waitSyncKHR(dpy, sync, flags);
+}
diff --git a/framework/egl/wrapper/eglwInitCore.inl b/framework/egl/wrapper/eglwInitCore.inl
index 15f941d..a5919ed 100644
--- a/framework/egl/wrapper/eglwInitCore.inl
+++ b/framework/egl/wrapper/eglwInitCore.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 dst->bindAPI						= (eglBindAPIFunc)							loader->get("eglBindAPI");
 dst->bindTexImage					= (eglBindTexImageFunc)						loader->get("eglBindTexImage");
diff --git a/framework/egl/wrapper/eglwInitExtensions.inl b/framework/egl/wrapper/eglwInitExtensions.inl
index 90d00a1..28b92bd 100644
--- a/framework/egl/wrapper/eglwInitExtensions.inl
+++ b/framework/egl/wrapper/eglwInitExtensions.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 dst->clientWaitSyncKHR				= (eglClientWaitSyncKHRFunc)				loader->get("eglClientWaitSyncKHR");
 dst->createImageKHR					= (eglCreateImageKHRFunc)					loader->get("eglCreateImageKHR");
diff --git a/framework/egl/wrapper/eglwLibrary.inl b/framework/egl/wrapper/eglwLibrary.inl
index a3d617d..bfba13e 100644
--- a/framework/egl/wrapper/eglwLibrary.inl
+++ b/framework/egl/wrapper/eglwLibrary.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 virtual EGLBoolean									bindAPI							(EGLenum api) const																								= 0;
 virtual EGLBoolean									bindTexImage					(EGLDisplay dpy, EGLSurface surface, EGLint buffer) const														= 0;
diff --git a/framework/egl/wrapper/eglwStaticLibrary14.inl b/framework/egl/wrapper/eglwStaticLibrary14.inl
index 22a2c5c..f9ae983 100644
--- a/framework/egl/wrapper/eglwStaticLibrary14.inl
+++ b/framework/egl/wrapper/eglwStaticLibrary14.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 	{ "eglBindAPI",							(deFunctionPtr)eglBindAPI },
 	{ "eglBindTexImage",					(deFunctionPtr)eglBindTexImage },
diff --git a/framework/egl/wrapper/eglwStaticLibrary15.inl b/framework/egl/wrapper/eglwStaticLibrary15.inl
index a44c589..6a69ede 100644
--- a/framework/egl/wrapper/eglwStaticLibrary15.inl
+++ b/framework/egl/wrapper/eglwStaticLibrary15.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 	{ "eglBindAPI",							(deFunctionPtr)eglBindAPI },
 	{ "eglBindTexImage",					(deFunctionPtr)eglBindTexImage },
diff --git a/framework/opengl/gluCallLogUtil.inl b/framework/opengl/gluCallLogUtil.inl
index 7df1a37..4f6e42b 100644
--- a/framework/opengl/gluCallLogUtil.inl
+++ b/framework/opengl/gluCallLogUtil.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 
 int getTextureParamNumArgs (int pname)
diff --git a/framework/opengl/gluCallLogWrapper.inl b/framework/opengl/gluCallLogWrapper.inl
index 13ce84c..1ecc948 100644
--- a/framework/opengl/gluCallLogWrapper.inl
+++ b/framework/opengl/gluCallLogWrapper.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 
 void CallLogWrapper::glActiveShaderProgram (glw::GLuint pipeline, glw::GLuint program)
@@ -423,11 +423,11 @@
 	m_gl.clearNamedBufferSubData(buffer, internalformat, offset, size, format, type, data);
 }
 
-void CallLogWrapper::glClearNamedFramebufferfi (glw::GLuint framebuffer, glw::GLenum buffer, const glw::GLfloat depth, glw::GLint stencil)
+void CallLogWrapper::glClearNamedFramebufferfi (glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, glw::GLfloat depth, glw::GLint stencil)
 {
 	if (m_enableLog)
-		m_log << TestLog::Message << "glClearNamedFramebufferfi(" << framebuffer << ", " << toHex(buffer) << ", " << depth << ", " << stencil << ");" << TestLog::EndMessage;
-	m_gl.clearNamedFramebufferfi(framebuffer, buffer, depth, stencil);
+		m_log << TestLog::Message << "glClearNamedFramebufferfi(" << framebuffer << ", " << toHex(buffer) << ", " << drawbuffer << ", " << depth << ", " << stencil << ");" << TestLog::EndMessage;
+	m_gl.clearNamedFramebufferfi(framebuffer, buffer, drawbuffer, depth, stencil);
 }
 
 void CallLogWrapper::glClearNamedFramebufferfv (glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLfloat *value)
diff --git a/framework/opengl/gluCallLogWrapperApi.inl b/framework/opengl/gluCallLogWrapperApi.inl
index 5785d59..53e83dd 100644
--- a/framework/opengl/gluCallLogWrapperApi.inl
+++ b/framework/opengl/gluCallLogWrapperApi.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 void					glActiveShaderProgram							(glw::GLuint pipeline, glw::GLuint program);
 void					glActiveTexture									(glw::GLenum texture);
@@ -62,7 +62,7 @@
 void					glClearDepthf									(glw::GLfloat d);
 void					glClearNamedBufferData							(glw::GLuint buffer, glw::GLenum internalformat, glw::GLenum format, glw::GLenum type, const void *data);
 void					glClearNamedBufferSubData						(glw::GLuint buffer, glw::GLenum internalformat, glw::GLintptr offset, glw::GLsizeiptr size, glw::GLenum format, glw::GLenum type, const void *data);
-void					glClearNamedFramebufferfi						(glw::GLuint framebuffer, glw::GLenum buffer, const glw::GLfloat depth, glw::GLint stencil);
+void					glClearNamedFramebufferfi						(glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, glw::GLfloat depth, glw::GLint stencil);
 void					glClearNamedFramebufferfv						(glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLfloat *value);
 void					glClearNamedFramebufferiv						(glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLint *value);
 void					glClearNamedFramebufferuiv						(glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLuint *value);
diff --git a/framework/opengl/gluES3PlusWrapperFuncs.inl b/framework/opengl/gluES3PlusWrapperFuncs.inl
index bf4b095..8d5167a 100644
--- a/framework/opengl/gluES3PlusWrapperFuncs.inl
+++ b/framework/opengl/gluES3PlusWrapperFuncs.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 dst->activeShaderProgram					= src.activeShaderProgram;
 dst->activeTexture							= src.activeTexture;
diff --git a/framework/opengl/gluQueryUtil.inl b/framework/opengl/gluQueryUtil.inl
index 93a03c2..da5a927 100644
--- a/framework/opengl/gluQueryUtil.inl
+++ b/framework/opengl/gluQueryUtil.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 
 int getBasicQueryNumArgsOut (int pname)
diff --git a/framework/opengl/gluStrUtil.inl b/framework/opengl/gluStrUtil.inl
index f1504a6..a75e8ab 100644
--- a/framework/opengl/gluStrUtil.inl
+++ b/framework/opengl/gluStrUtil.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 
 const char* getErrorName (int value)
diff --git a/framework/opengl/gluStrUtilPrototypes.inl b/framework/opengl/gluStrUtilPrototypes.inl
index c0505ef..5e54abf 100644
--- a/framework/opengl/gluStrUtilPrototypes.inl
+++ b/framework/opengl/gluStrUtilPrototypes.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 const char*							getErrorName							(int value);
 const char*							getTypeName								(int value);
diff --git a/framework/opengl/wrapper/glwApi.inl b/framework/opengl/wrapper/glwApi.inl
index beb0940..c082721 100644
--- a/framework/opengl/wrapper/glwApi.inl
+++ b/framework/opengl/wrapper/glwApi.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 #define			glActiveShaderProgram							glwActiveShaderProgram
 #define			glActiveTexture									glwActiveTexture
@@ -722,7 +722,7 @@
 void			glwClearDepthf									(GLfloat d);
 void			glwClearNamedBufferData							(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
 void			glwClearNamedBufferSubData						(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-void			glwClearNamedFramebufferfi						(GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil);
+void			glwClearNamedFramebufferfi						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
 void			glwClearNamedFramebufferfv						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
 void			glwClearNamedFramebufferiv						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
 void			glwClearNamedFramebufferuiv						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
diff --git a/framework/opengl/wrapper/glwEnums.inl b/framework/opengl/wrapper/glwEnums.inl
index e0c4d6c..8fc33f9 100644
--- a/framework/opengl/wrapper/glwEnums.inl
+++ b/framework/opengl/wrapper/glwEnums.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 #define GL_DEPTH_BUFFER_BIT												0x00000100
 #define GL_STENCIL_BUFFER_BIT											0x00000400
diff --git a/framework/opengl/wrapper/glwFunctionTypes.inl b/framework/opengl/wrapper/glwFunctionTypes.inl
index 0b1f747..615a256 100644
--- a/framework/opengl/wrapper/glwFunctionTypes.inl
+++ b/framework/opengl/wrapper/glwFunctionTypes.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 typedef GLW_APICALL void			(GLW_APIENTRY* glActiveShaderProgramFunc)							(GLuint pipeline, GLuint program);
 typedef GLW_APICALL void			(GLW_APIENTRY* glActiveTextureFunc)									(GLenum texture);
@@ -62,7 +62,7 @@
 typedef GLW_APICALL void			(GLW_APIENTRY* glClearDepthfFunc)									(GLfloat d);
 typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedBufferDataFunc)							(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
 typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedBufferSubDataFunc)						(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferfiFunc)						(GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil);
+typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferfiFunc)						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
 typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferfvFunc)						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
 typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferivFunc)						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
 typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferuivFunc)						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
diff --git a/framework/opengl/wrapper/glwFunctions.inl b/framework/opengl/wrapper/glwFunctions.inl
index 80bbcb5..7149f17 100644
--- a/framework/opengl/wrapper/glwFunctions.inl
+++ b/framework/opengl/wrapper/glwFunctions.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 glActiveShaderProgramFunc							activeShaderProgram;
 glActiveTextureFunc									activeTexture;
diff --git a/framework/opengl/wrapper/glwImpl.inl b/framework/opengl/wrapper/glwImpl.inl
index e521405..0ba8a73 100644
--- a/framework/opengl/wrapper/glwImpl.inl
+++ b/framework/opengl/wrapper/glwImpl.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 
 void glwActiveShaderProgram (GLuint pipeline, GLuint program)
@@ -476,12 +476,12 @@
 	gl->clearNamedBufferSubData(buffer, internalformat, offset, size, format, type, data);
 }
 
-void glwClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil)
+void glwClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
 {
 	const glw::Functions* gl = glw::getCurrentThreadFunctions();
 	if (!gl)
 		return;
-	gl->clearNamedFramebufferfi(framebuffer, buffer, depth, stencil);
+	gl->clearNamedFramebufferfi(framebuffer, buffer, drawbuffer, depth, stencil);
 }
 
 void glwClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)
diff --git a/framework/opengl/wrapper/glwInitES20.inl b/framework/opengl/wrapper/glwInitES20.inl
index 5dd6080..c6e6f0f 100644
--- a/framework/opengl/wrapper/glwInitES20.inl
+++ b/framework/opengl/wrapper/glwInitES20.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
 gl->attachShader						= (glAttachShaderFunc)							loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitES20Direct.inl b/framework/opengl/wrapper/glwInitES20Direct.inl
index 2af9a05..ce21ae6 100644
--- a/framework/opengl/wrapper/glwInitES20Direct.inl
+++ b/framework/opengl/wrapper/glwInitES20Direct.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeTexture						= &glActiveTexture;
 gl->attachShader						= &glAttachShader;
diff --git a/framework/opengl/wrapper/glwInitES30.inl b/framework/opengl/wrapper/glwInitES30.inl
index 8d822f3..e765528 100644
--- a/framework/opengl/wrapper/glwInitES30.inl
+++ b/framework/opengl/wrapper/glwInitES30.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
 gl->attachShader						= (glAttachShaderFunc)							loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitES30Direct.inl b/framework/opengl/wrapper/glwInitES30Direct.inl
index a6c125e..445d2c0 100644
--- a/framework/opengl/wrapper/glwInitES30Direct.inl
+++ b/framework/opengl/wrapper/glwInitES30Direct.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeTexture						= &glActiveTexture;
 gl->attachShader						= &glAttachShader;
diff --git a/framework/opengl/wrapper/glwInitES31.inl b/framework/opengl/wrapper/glwInitES31.inl
index 9d8e175..67d5faf 100644
--- a/framework/opengl/wrapper/glwInitES31.inl
+++ b/framework/opengl/wrapper/glwInitES31.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram					= (glActiveShaderProgramFunc)					loader->get("glActiveShaderProgram");
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitES31Direct.inl b/framework/opengl/wrapper/glwInitES31Direct.inl
index a1f1f5b..713cc49 100644
--- a/framework/opengl/wrapper/glwInitES31Direct.inl
+++ b/framework/opengl/wrapper/glwInitES31Direct.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram					= &glActiveShaderProgram;
 gl->activeTexture						= &glActiveTexture;
diff --git a/framework/opengl/wrapper/glwInitES32.inl b/framework/opengl/wrapper/glwInitES32.inl
index 376462d..4bcbebb 100644
--- a/framework/opengl/wrapper/glwInitES32.inl
+++ b/framework/opengl/wrapper/glwInitES32.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram					= (glActiveShaderProgramFunc)					loader->get("glActiveShaderProgram");
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitES32Direct.inl b/framework/opengl/wrapper/glwInitES32Direct.inl
index f30b57e..79a203d 100644
--- a/framework/opengl/wrapper/glwInitES32Direct.inl
+++ b/framework/opengl/wrapper/glwInitES32Direct.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram					= &glActiveShaderProgram;
 gl->activeTexture						= &glActiveTexture;
diff --git a/framework/opengl/wrapper/glwInitExtES.inl b/framework/opengl/wrapper/glwInitExtES.inl
index 5e8005b..fdfbbfe 100644
--- a/framework/opengl/wrapper/glwInitExtES.inl
+++ b/framework/opengl/wrapper/glwInitExtES.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 
 if (de::contains(extSet, "GL_KHR_blend_equation_advanced"))
diff --git a/framework/opengl/wrapper/glwInitExtGL.inl b/framework/opengl/wrapper/glwInitExtGL.inl
index d044fa2..7530dd3 100644
--- a/framework/opengl/wrapper/glwInitExtGL.inl
+++ b/framework/opengl/wrapper/glwInitExtGL.inl
@@ -1,9 +1,14 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 
+if (de::contains(extSet, "GL_KHR_blend_equation_advanced"))
+{
+	gl->blendBarrier	= (glBlendBarrierFunc)	loader->get("glBlendBarrierKHR");
+}
+
 if (de::contains(extSet, "GL_KHR_debug"))
 {
 	gl->debugMessageCallback	= (glDebugMessageCallbackFunc)	loader->get("glDebugMessageCallback");
@@ -18,6 +23,13 @@
 	gl->pushDebugGroup			= (glPushDebugGroupFunc)		loader->get("glPushDebugGroup");
 }
 
+if (de::contains(extSet, "GL_EXT_debug_marker"))
+{
+	gl->insertEventMarkerEXT	= (glInsertEventMarkerEXTFunc)	loader->get("glInsertEventMarkerEXT");
+	gl->popGroupMarkerEXT		= (glPopGroupMarkerEXTFunc)		loader->get("glPopGroupMarkerEXT");
+	gl->pushGroupMarkerEXT		= (glPushGroupMarkerEXTFunc)	loader->get("glPushGroupMarkerEXT");
+}
+
 if (de::contains(extSet, "GL_KHR_robustness"))
 {
 	gl->getGraphicsResetStatus	= (glGetGraphicsResetStatusFunc)	loader->get("glGetGraphicsResetStatus");
diff --git a/framework/opengl/wrapper/glwInitGL30.inl b/framework/opengl/wrapper/glwInitGL30.inl
index 9dc2897..9aea113 100644
--- a/framework/opengl/wrapper/glwInitGL30.inl
+++ b/framework/opengl/wrapper/glwInitGL30.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
 gl->attachShader						= (glAttachShaderFunc)							loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL31.inl b/framework/opengl/wrapper/glwInitGL31.inl
index 92800d9..af71dc4 100644
--- a/framework/opengl/wrapper/glwInitGL31.inl
+++ b/framework/opengl/wrapper/glwInitGL31.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
 gl->attachShader						= (glAttachShaderFunc)							loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL32.inl b/framework/opengl/wrapper/glwInitGL32.inl
index 91f5db4..7c7fbda 100644
--- a/framework/opengl/wrapper/glwInitGL32.inl
+++ b/framework/opengl/wrapper/glwInitGL32.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
 gl->attachShader						= (glAttachShaderFunc)							loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL33.inl b/framework/opengl/wrapper/glwInitGL33.inl
index caa2e55..6472c21 100644
--- a/framework/opengl/wrapper/glwInitGL33.inl
+++ b/framework/opengl/wrapper/glwInitGL33.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
 gl->attachShader						= (glAttachShaderFunc)							loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL40.inl b/framework/opengl/wrapper/glwInitGL40.inl
index 2bf8865..a0a0c11 100644
--- a/framework/opengl/wrapper/glwInitGL40.inl
+++ b/framework/opengl/wrapper/glwInitGL40.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
 gl->attachShader						= (glAttachShaderFunc)							loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL41.inl b/framework/opengl/wrapper/glwInitGL41.inl
index cfcf02e..2228280 100644
--- a/framework/opengl/wrapper/glwInitGL41.inl
+++ b/framework/opengl/wrapper/glwInitGL41.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram					= (glActiveShaderProgramFunc)					loader->get("glActiveShaderProgram");
 gl->activeTexture						= (glActiveTextureFunc)							loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitGL42.inl b/framework/opengl/wrapper/glwInitGL42.inl
index c9c21f3..1d931a4 100644
--- a/framework/opengl/wrapper/glwInitGL42.inl
+++ b/framework/opengl/wrapper/glwInitGL42.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram							= (glActiveShaderProgramFunc)							loader->get("glActiveShaderProgram");
 gl->activeTexture								= (glActiveTextureFunc)									loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitGL43.inl b/framework/opengl/wrapper/glwInitGL43.inl
index 38ee658..225a51f 100644
--- a/framework/opengl/wrapper/glwInitGL43.inl
+++ b/framework/opengl/wrapper/glwInitGL43.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram							= (glActiveShaderProgramFunc)							loader->get("glActiveShaderProgram");
 gl->activeTexture								= (glActiveTextureFunc)									loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitGL44.inl b/framework/opengl/wrapper/glwInitGL44.inl
index 31e26ef..b15f933 100644
--- a/framework/opengl/wrapper/glwInitGL44.inl
+++ b/framework/opengl/wrapper/glwInitGL44.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram							= (glActiveShaderProgramFunc)							loader->get("glActiveShaderProgram");
 gl->activeTexture								= (glActiveTextureFunc)									loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitGL45.inl b/framework/opengl/wrapper/glwInitGL45.inl
index 3cb112c..c2e8815 100644
--- a/framework/opengl/wrapper/glwInitGL45.inl
+++ b/framework/opengl/wrapper/glwInitGL45.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram							= (glActiveShaderProgramFunc)							loader->get("glActiveShaderProgram");
 gl->activeTexture								= (glActiveTextureFunc)									loader->get("glActiveTexture");
diff --git a/framework/platform/null/tcuNullRenderContextFuncs.inl b/framework/platform/null/tcuNullRenderContextFuncs.inl
index bf2e720..b0db5f2 100644
--- a/framework/platform/null/tcuNullRenderContextFuncs.inl
+++ b/framework/platform/null/tcuNullRenderContextFuncs.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 
 GLW_APICALL void GLW_APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program)
@@ -478,10 +478,11 @@
 
 }
 
-GLW_APICALL void GLW_APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil)
+GLW_APICALL void GLW_APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
 {
 	DE_UNREF(framebuffer);
 	DE_UNREF(buffer);
+	DE_UNREF(drawbuffer);
 	DE_UNREF(depth);
 	DE_UNREF(stencil);
 
diff --git a/framework/platform/null/tcuNullRenderContextInitFuncs.inl b/framework/platform/null/tcuNullRenderContextInitFuncs.inl
index dfc2256..8edcb74 100644
--- a/framework/platform/null/tcuNullRenderContextInitFuncs.inl
+++ b/framework/platform/null/tcuNullRenderContextInitFuncs.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos GL API description (gl.xml) revision 32093.
+ * Generated from Khronos GL API description (gl.xml) revision db2965fc26513b254e2f964171f79e416a05fe29.
  */
 gl->activeShaderProgram							= glActiveShaderProgram;
 gl->activeTexture								= glActiveTexture;
diff --git a/modules/egl/teglGetProcAddressTests.inl b/modules/egl/teglGetProcAddressTests.inl
index 33fde9b..5f0cd81 100644
--- a/modules/egl/teglGetProcAddressTests.inl
+++ b/modules/egl/teglGetProcAddressTests.inl
@@ -1,7 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  *
- * Generated from Khronos EGL API description (egl.xml) revision 33315.
+ * Generated from Khronos EGL API description (egl.xml) revision 7fdf7d3a1ad50afa03968db889b68af211da6e27.
  */
 
 static const char* s_EGL14[] =
@@ -1039,6 +1039,12 @@
 	"glBufferStorageEXT",
 };
 
+static const char* s_GL_EXT_clear_texture[] =
+{
+	"glClearTexImageEXT",
+	"glClearTexSubImageEXT",
+};
+
 static const char* s_GL_EXT_copy_image[] =
 {
 	"glCopyImageSubDataEXT",
@@ -1103,6 +1109,12 @@
 	"glDrawElementsInstancedEXT",
 };
 
+static const char* s_GL_EXT_draw_transform_feedback[] =
+{
+	"glDrawTransformFeedbackEXT",
+	"glDrawTransformFeedbackInstancedEXT",
+};
+
 static const char* s_GL_EXT_geometry_shader[] =
 {
 	"glFramebufferTextureEXT",
@@ -1139,6 +1151,11 @@
 	"glIsQueryEXT",
 };
 
+static const char* s_GL_EXT_polygon_offset_clamp[] =
+{
+	"glPolygonOffsetClampEXT",
+};
+
 static const char* s_GL_EXT_primitive_bounding_box[] =
 {
 	"glPrimitiveBoundingBoxEXT",
@@ -1197,6 +1214,13 @@
 	"glValidateProgramPipelineEXT",
 };
 
+static const char* s_GL_EXT_shader_pixel_local_storage2[] =
+{
+	"glClearPixelLocalStorageuiEXT",
+	"glFramebufferPixelLocalStorageSizeEXT",
+	"glGetFramebufferPixelLocalStorageSizeEXT",
+};
+
 static const char* s_GL_EXT_sparse_texture[] =
 {
 	"glTexPageCommitmentEXT",
@@ -1235,6 +1259,27 @@
 	"glTextureViewEXT",
 };
 
+static const char* s_GL_EXT_window_rectangles[] =
+{
+	"glWindowRectanglesEXT",
+};
+
+static const char* s_GL_IMG_bindless_texture[] =
+{
+	"glGetTextureHandleIMG",
+	"glGetTextureSamplerHandleIMG",
+	"glProgramUniformHandleui64IMG",
+	"glProgramUniformHandleui64vIMG",
+	"glUniformHandleui64IMG",
+	"glUniformHandleui64vIMG",
+};
+
+static const char* s_GL_IMG_framebuffer_downsample[] =
+{
+	"glFramebufferTexture2DDownsampleIMG",
+	"glFramebufferTextureLayerDownsampleIMG",
+};
+
 static const char* s_GL_INTEL_framebuffer_CMAA[] =
 {
 	"glApplyFramebufferAttachmentCMAAINTEL",
@@ -1317,6 +1362,11 @@
 	"glSubpixelPrecisionBiasNV",
 };
 
+static const char* s_GL_NV_conservative_raster_pre_snap_triangles[] =
+{
+	"glConservativeRasterParameteriNV",
+};
+
 static const char* s_GL_NV_copy_buffer[] =
 {
 	"glCopyBufferSubDataNV",
@@ -1362,6 +1412,43 @@
 	"glRenderbufferStorageMultisampleNV",
 };
 
+static const char* s_GL_NV_gpu_shader5[] =
+{
+	"glGetUniformi64vNV",
+	"glProgramUniform1i64NV",
+	"glProgramUniform1i64vNV",
+	"glProgramUniform1ui64NV",
+	"glProgramUniform1ui64vNV",
+	"glProgramUniform2i64NV",
+	"glProgramUniform2i64vNV",
+	"glProgramUniform2ui64NV",
+	"glProgramUniform2ui64vNV",
+	"glProgramUniform3i64NV",
+	"glProgramUniform3i64vNV",
+	"glProgramUniform3ui64NV",
+	"glProgramUniform3ui64vNV",
+	"glProgramUniform4i64NV",
+	"glProgramUniform4i64vNV",
+	"glProgramUniform4ui64NV",
+	"glProgramUniform4ui64vNV",
+	"glUniform1i64NV",
+	"glUniform1i64vNV",
+	"glUniform1ui64NV",
+	"glUniform1ui64vNV",
+	"glUniform2i64NV",
+	"glUniform2i64vNV",
+	"glUniform2ui64NV",
+	"glUniform2ui64vNV",
+	"glUniform3i64NV",
+	"glUniform3i64vNV",
+	"glUniform3ui64NV",
+	"glUniform3ui64vNV",
+	"glUniform4i64NV",
+	"glUniform4i64vNV",
+	"glUniform4ui64NV",
+	"glUniform4ui64vNV",
+};
+
 static const char* s_GL_NV_instanced_arrays[] =
 {
 	"glVertexAttribDivisorNV",
@@ -1476,6 +1563,11 @@
 	"glViewportIndexedfvNV",
 };
 
+static const char* s_GL_NV_viewport_swizzle[] =
+{
+	"glViewportSwizzleNV",
+};
+
 static const char* s_GL_OES_copy_image[] =
 {
 	"glCopyImageSubDataOES",
@@ -1565,16 +1657,52 @@
 	"glTextureViewOES",
 };
 
+static const char* s_GL_OES_viewport_array[] =
+{
+	"glDepthRangeArrayfvOES",
+	"glDepthRangeIndexedfOES",
+	"glDisableiOES",
+	"glEnableiOES",
+	"glGetFloati_vOES",
+	"glIsEnablediOES",
+	"glScissorArrayvOES",
+	"glScissorIndexedOES",
+	"glScissorIndexedvOES",
+	"glViewportArrayvOES",
+	"glViewportIndexedfOES",
+	"glViewportIndexedfvOES",
+};
+
 static const char* s_GL_OVR_multiview[] =
 {
 	"glFramebufferTextureMultiviewOVR",
 };
 
+static const char* s_GL_OVR_multiview_multisampled_render_to_texture[] =
+{
+	"glFramebufferTextureMultisampleMultiviewOVR",
+};
+
 static const char* s_GL_QCOM_alpha_test[] =
 {
 	"glAlphaFuncQCOM",
 };
 
+static const char* s_GL_QCOM_framebuffer_foveated[] =
+{
+	"glFramebufferFoveationConfigQCOM",
+	"glFramebufferFoveationParametersQCOM",
+};
+
+static const char* s_GL_NV_draw_vulkan_image[] =
+{
+	"glDrawVkImageNV",
+	"glGetVkProcAddrNV",
+	"glWaitVkSemaphoreNV",
+	"glSignalVkSemaphoreNV",
+	"glSignalVkFenceNV",
+};
+
 static const struct
 {
 	const char*			name;
@@ -1582,147 +1710,161 @@
 	const char* const*	functions;
 } s_extensions[] =
 {
-	{ "EGL_ANDROID_blob_cache",							DE_LENGTH_OF_ARRAY(s_EGL_ANDROID_blob_cache),						s_EGL_ANDROID_blob_cache						},
-	{ "EGL_ANDROID_create_native_client_buffer",		DE_LENGTH_OF_ARRAY(s_EGL_ANDROID_create_native_client_buffer),		s_EGL_ANDROID_create_native_client_buffer		},
-	{ "EGL_ANDROID_native_fence_sync",					DE_LENGTH_OF_ARRAY(s_EGL_ANDROID_native_fence_sync),				s_EGL_ANDROID_native_fence_sync					},
-	{ "EGL_ANDROID_presentation_time",					DE_LENGTH_OF_ARRAY(s_EGL_ANDROID_presentation_time),				s_EGL_ANDROID_presentation_time					},
-	{ "EGL_ANGLE_query_surface_pointer",				DE_LENGTH_OF_ARRAY(s_EGL_ANGLE_query_surface_pointer),				s_EGL_ANGLE_query_surface_pointer				},
-	{ "EGL_EXT_device_base",							DE_LENGTH_OF_ARRAY(s_EGL_EXT_device_base),							s_EGL_EXT_device_base							},
-	{ "EGL_EXT_device_enumeration",						DE_LENGTH_OF_ARRAY(s_EGL_EXT_device_enumeration),					s_EGL_EXT_device_enumeration					},
-	{ "EGL_EXT_device_query",							DE_LENGTH_OF_ARRAY(s_EGL_EXT_device_query),							s_EGL_EXT_device_query							},
-	{ "EGL_EXT_image_dma_buf_import_modifiers",			DE_LENGTH_OF_ARRAY(s_EGL_EXT_image_dma_buf_import_modifiers),		s_EGL_EXT_image_dma_buf_import_modifiers		},
-	{ "EGL_EXT_output_base",							DE_LENGTH_OF_ARRAY(s_EGL_EXT_output_base),							s_EGL_EXT_output_base							},
-	{ "EGL_EXT_platform_base",							DE_LENGTH_OF_ARRAY(s_EGL_EXT_platform_base),						s_EGL_EXT_platform_base							},
-	{ "EGL_EXT_stream_consumer_egloutput",				DE_LENGTH_OF_ARRAY(s_EGL_EXT_stream_consumer_egloutput),			s_EGL_EXT_stream_consumer_egloutput				},
-	{ "EGL_EXT_swap_buffers_with_damage",				DE_LENGTH_OF_ARRAY(s_EGL_EXT_swap_buffers_with_damage),				s_EGL_EXT_swap_buffers_with_damage				},
-	{ "EGL_HI_clientpixmap",							DE_LENGTH_OF_ARRAY(s_EGL_HI_clientpixmap),							s_EGL_HI_clientpixmap							},
-	{ "EGL_KHR_cl_event2",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_cl_event2),							s_EGL_KHR_cl_event2								},
-	{ "EGL_KHR_debug",									DE_LENGTH_OF_ARRAY(s_EGL_KHR_debug),								s_EGL_KHR_debug									},
-	{ "EGL_KHR_fence_sync",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_fence_sync),							s_EGL_KHR_fence_sync							},
-	{ "EGL_KHR_image",									DE_LENGTH_OF_ARRAY(s_EGL_KHR_image),								s_EGL_KHR_image									},
-	{ "EGL_KHR_image_base",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_image_base),							s_EGL_KHR_image_base							},
-	{ "EGL_KHR_lock_surface",							DE_LENGTH_OF_ARRAY(s_EGL_KHR_lock_surface),							s_EGL_KHR_lock_surface							},
-	{ "EGL_KHR_lock_surface3",							DE_LENGTH_OF_ARRAY(s_EGL_KHR_lock_surface3),						s_EGL_KHR_lock_surface3							},
-	{ "EGL_KHR_partial_update",							DE_LENGTH_OF_ARRAY(s_EGL_KHR_partial_update),						s_EGL_KHR_partial_update						},
-	{ "EGL_KHR_reusable_sync",							DE_LENGTH_OF_ARRAY(s_EGL_KHR_reusable_sync),						s_EGL_KHR_reusable_sync							},
-	{ "EGL_KHR_stream",									DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream),								s_EGL_KHR_stream								},
-	{ "EGL_KHR_stream_attrib",							DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_attrib),						s_EGL_KHR_stream_attrib							},
-	{ "EGL_KHR_stream_consumer_gltexture",				DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_consumer_gltexture),			s_EGL_KHR_stream_consumer_gltexture				},
-	{ "EGL_KHR_stream_cross_process_fd",				DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_cross_process_fd),				s_EGL_KHR_stream_cross_process_fd				},
-	{ "EGL_KHR_stream_fifo",							DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_fifo),							s_EGL_KHR_stream_fifo							},
-	{ "EGL_KHR_stream_producer_eglsurface",				DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_producer_eglsurface),			s_EGL_KHR_stream_producer_eglsurface			},
-	{ "EGL_KHR_swap_buffers_with_damage",				DE_LENGTH_OF_ARRAY(s_EGL_KHR_swap_buffers_with_damage),				s_EGL_KHR_swap_buffers_with_damage				},
-	{ "EGL_KHR_wait_sync",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_wait_sync),							s_EGL_KHR_wait_sync								},
-	{ "EGL_MESA_drm_image",								DE_LENGTH_OF_ARRAY(s_EGL_MESA_drm_image),							s_EGL_MESA_drm_image							},
-	{ "EGL_MESA_image_dma_buf_export",					DE_LENGTH_OF_ARRAY(s_EGL_MESA_image_dma_buf_export),				s_EGL_MESA_image_dma_buf_export					},
-	{ "EGL_NOK_swap_region",							DE_LENGTH_OF_ARRAY(s_EGL_NOK_swap_region),							s_EGL_NOK_swap_region							},
-	{ "EGL_NOK_swap_region2",							DE_LENGTH_OF_ARRAY(s_EGL_NOK_swap_region2),							s_EGL_NOK_swap_region2							},
-	{ "EGL_NV_native_query",							DE_LENGTH_OF_ARRAY(s_EGL_NV_native_query),							s_EGL_NV_native_query							},
-	{ "EGL_NV_post_sub_buffer",							DE_LENGTH_OF_ARRAY(s_EGL_NV_post_sub_buffer),						s_EGL_NV_post_sub_buffer						},
-	{ "EGL_NV_stream_consumer_gltexture_yuv",			DE_LENGTH_OF_ARRAY(s_EGL_NV_stream_consumer_gltexture_yuv),			s_EGL_NV_stream_consumer_gltexture_yuv			},
-	{ "EGL_NV_stream_metadata",							DE_LENGTH_OF_ARRAY(s_EGL_NV_stream_metadata),						s_EGL_NV_stream_metadata						},
-	{ "EGL_NV_stream_reset",							DE_LENGTH_OF_ARRAY(s_EGL_NV_stream_reset),							s_EGL_NV_stream_reset							},
-	{ "EGL_NV_stream_sync",								DE_LENGTH_OF_ARRAY(s_EGL_NV_stream_sync),							s_EGL_NV_stream_sync							},
-	{ "EGL_NV_sync",									DE_LENGTH_OF_ARRAY(s_EGL_NV_sync),									s_EGL_NV_sync									},
-	{ "EGL_NV_system_time",								DE_LENGTH_OF_ARRAY(s_EGL_NV_system_time),							s_EGL_NV_system_time							},
-	{ "GL_APPLE_copy_texture_levels",					DE_LENGTH_OF_ARRAY(s_GL_APPLE_copy_texture_levels),					s_GL_APPLE_copy_texture_levels					},
-	{ "GL_APPLE_framebuffer_multisample",				DE_LENGTH_OF_ARRAY(s_GL_APPLE_framebuffer_multisample),				s_GL_APPLE_framebuffer_multisample				},
-	{ "GL_APPLE_sync",									DE_LENGTH_OF_ARRAY(s_GL_APPLE_sync),								s_GL_APPLE_sync									},
-	{ "GL_EXT_discard_framebuffer",						DE_LENGTH_OF_ARRAY(s_GL_EXT_discard_framebuffer),					s_GL_EXT_discard_framebuffer					},
-	{ "GL_EXT_map_buffer_range",						DE_LENGTH_OF_ARRAY(s_GL_EXT_map_buffer_range),						s_GL_EXT_map_buffer_range						},
-	{ "GL_EXT_multi_draw_arrays",						DE_LENGTH_OF_ARRAY(s_GL_EXT_multi_draw_arrays),						s_GL_EXT_multi_draw_arrays						},
-	{ "GL_EXT_multisampled_render_to_texture",			DE_LENGTH_OF_ARRAY(s_GL_EXT_multisampled_render_to_texture),		s_GL_EXT_multisampled_render_to_texture			},
-	{ "GL_EXT_robustness",								DE_LENGTH_OF_ARRAY(s_GL_EXT_robustness),							s_GL_EXT_robustness								},
-	{ "GL_EXT_texture_storage",							DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_storage),						s_GL_EXT_texture_storage						},
-	{ "GL_IMG_multisampled_render_to_texture",			DE_LENGTH_OF_ARRAY(s_GL_IMG_multisampled_render_to_texture),		s_GL_IMG_multisampled_render_to_texture			},
-	{ "GL_IMG_user_clip_plane",							DE_LENGTH_OF_ARRAY(s_GL_IMG_user_clip_plane),						s_GL_IMG_user_clip_plane						},
-	{ "GL_NV_fence",									DE_LENGTH_OF_ARRAY(s_GL_NV_fence),									s_GL_NV_fence									},
-	{ "GL_OES_EGL_image",								DE_LENGTH_OF_ARRAY(s_GL_OES_EGL_image),								s_GL_OES_EGL_image								},
-	{ "GL_OES_blend_equation_separate",					DE_LENGTH_OF_ARRAY(s_GL_OES_blend_equation_separate),				s_GL_OES_blend_equation_separate				},
-	{ "GL_OES_blend_func_separate",						DE_LENGTH_OF_ARRAY(s_GL_OES_blend_func_separate),					s_GL_OES_blend_func_separate					},
-	{ "GL_OES_blend_subtract",							DE_LENGTH_OF_ARRAY(s_GL_OES_blend_subtract),						s_GL_OES_blend_subtract							},
-	{ "GL_OES_draw_texture",							DE_LENGTH_OF_ARRAY(s_GL_OES_draw_texture),							s_GL_OES_draw_texture							},
-	{ "GL_OES_fixed_point",								DE_LENGTH_OF_ARRAY(s_GL_OES_fixed_point),							s_GL_OES_fixed_point							},
-	{ "GL_OES_framebuffer_object",						DE_LENGTH_OF_ARRAY(s_GL_OES_framebuffer_object),					s_GL_OES_framebuffer_object						},
-	{ "GL_OES_mapbuffer",								DE_LENGTH_OF_ARRAY(s_GL_OES_mapbuffer),								s_GL_OES_mapbuffer								},
-	{ "GL_OES_matrix_palette",							DE_LENGTH_OF_ARRAY(s_GL_OES_matrix_palette),						s_GL_OES_matrix_palette							},
-	{ "GL_OES_point_size_array",						DE_LENGTH_OF_ARRAY(s_GL_OES_point_size_array),						s_GL_OES_point_size_array						},
-	{ "GL_OES_query_matrix",							DE_LENGTH_OF_ARRAY(s_GL_OES_query_matrix),							s_GL_OES_query_matrix							},
-	{ "GL_OES_single_precision",						DE_LENGTH_OF_ARRAY(s_GL_OES_single_precision),						s_GL_OES_single_precision						},
-	{ "GL_OES_texture_cube_map",						DE_LENGTH_OF_ARRAY(s_GL_OES_texture_cube_map),						s_GL_OES_texture_cube_map						},
-	{ "GL_OES_vertex_array_object",						DE_LENGTH_OF_ARRAY(s_GL_OES_vertex_array_object),					s_GL_OES_vertex_array_object					},
-	{ "GL_QCOM_driver_control",							DE_LENGTH_OF_ARRAY(s_GL_QCOM_driver_control),						s_GL_QCOM_driver_control						},
-	{ "GL_QCOM_extended_get",							DE_LENGTH_OF_ARRAY(s_GL_QCOM_extended_get),							s_GL_QCOM_extended_get							},
-	{ "GL_QCOM_extended_get2",							DE_LENGTH_OF_ARRAY(s_GL_QCOM_extended_get2),						s_GL_QCOM_extended_get2							},
-	{ "GL_QCOM_tiled_rendering",						DE_LENGTH_OF_ARRAY(s_GL_QCOM_tiled_rendering),						s_GL_QCOM_tiled_rendering						},
-	{ "GL_AMD_performance_monitor",						DE_LENGTH_OF_ARRAY(s_GL_AMD_performance_monitor),					s_GL_AMD_performance_monitor					},
-	{ "GL_ANGLE_framebuffer_blit",						DE_LENGTH_OF_ARRAY(s_GL_ANGLE_framebuffer_blit),					s_GL_ANGLE_framebuffer_blit						},
-	{ "GL_ANGLE_framebuffer_multisample",				DE_LENGTH_OF_ARRAY(s_GL_ANGLE_framebuffer_multisample),				s_GL_ANGLE_framebuffer_multisample				},
-	{ "GL_ANGLE_instanced_arrays",						DE_LENGTH_OF_ARRAY(s_GL_ANGLE_instanced_arrays),					s_GL_ANGLE_instanced_arrays						},
-	{ "GL_ANGLE_translated_shader_source",				DE_LENGTH_OF_ARRAY(s_GL_ANGLE_translated_shader_source),			s_GL_ANGLE_translated_shader_source				},
-	{ "GL_EXT_base_instance",							DE_LENGTH_OF_ARRAY(s_GL_EXT_base_instance),							s_GL_EXT_base_instance							},
-	{ "GL_EXT_blend_func_extended",						DE_LENGTH_OF_ARRAY(s_GL_EXT_blend_func_extended),					s_GL_EXT_blend_func_extended					},
-	{ "GL_EXT_buffer_storage",							DE_LENGTH_OF_ARRAY(s_GL_EXT_buffer_storage),						s_GL_EXT_buffer_storage							},
-	{ "GL_EXT_copy_image",								DE_LENGTH_OF_ARRAY(s_GL_EXT_copy_image),							s_GL_EXT_copy_image								},
-	{ "GL_EXT_debug_label",								DE_LENGTH_OF_ARRAY(s_GL_EXT_debug_label),							s_GL_EXT_debug_label							},
-	{ "GL_EXT_debug_marker",							DE_LENGTH_OF_ARRAY(s_GL_EXT_debug_marker),							s_GL_EXT_debug_marker							},
-	{ "GL_EXT_disjoint_timer_query",					DE_LENGTH_OF_ARRAY(s_GL_EXT_disjoint_timer_query),					s_GL_EXT_disjoint_timer_query					},
-	{ "GL_EXT_draw_buffers",							DE_LENGTH_OF_ARRAY(s_GL_EXT_draw_buffers),							s_GL_EXT_draw_buffers							},
-	{ "GL_EXT_draw_buffers_indexed",					DE_LENGTH_OF_ARRAY(s_GL_EXT_draw_buffers_indexed),					s_GL_EXT_draw_buffers_indexed					},
-	{ "GL_EXT_draw_elements_base_vertex",				DE_LENGTH_OF_ARRAY(s_GL_EXT_draw_elements_base_vertex),				s_GL_EXT_draw_elements_base_vertex				},
-	{ "GL_EXT_draw_instanced",							DE_LENGTH_OF_ARRAY(s_GL_EXT_draw_instanced),						s_GL_EXT_draw_instanced							},
-	{ "GL_EXT_geometry_shader",							DE_LENGTH_OF_ARRAY(s_GL_EXT_geometry_shader),						s_GL_EXT_geometry_shader						},
-	{ "GL_EXT_instanced_arrays",						DE_LENGTH_OF_ARRAY(s_GL_EXT_instanced_arrays),						s_GL_EXT_instanced_arrays						},
-	{ "GL_EXT_multi_draw_indirect",						DE_LENGTH_OF_ARRAY(s_GL_EXT_multi_draw_indirect),					s_GL_EXT_multi_draw_indirect					},
-	{ "GL_EXT_multiview_draw_buffers",					DE_LENGTH_OF_ARRAY(s_GL_EXT_multiview_draw_buffers),				s_GL_EXT_multiview_draw_buffers					},
-	{ "GL_EXT_occlusion_query_boolean",					DE_LENGTH_OF_ARRAY(s_GL_EXT_occlusion_query_boolean),				s_GL_EXT_occlusion_query_boolean				},
-	{ "GL_EXT_primitive_bounding_box",					DE_LENGTH_OF_ARRAY(s_GL_EXT_primitive_bounding_box),				s_GL_EXT_primitive_bounding_box					},
-	{ "GL_EXT_raster_multisample",						DE_LENGTH_OF_ARRAY(s_GL_EXT_raster_multisample),					s_GL_EXT_raster_multisample						},
-	{ "GL_EXT_separate_shader_objects",					DE_LENGTH_OF_ARRAY(s_GL_EXT_separate_shader_objects),				s_GL_EXT_separate_shader_objects				},
-	{ "GL_EXT_sparse_texture",							DE_LENGTH_OF_ARRAY(s_GL_EXT_sparse_texture),						s_GL_EXT_sparse_texture							},
-	{ "GL_EXT_tessellation_shader",						DE_LENGTH_OF_ARRAY(s_GL_EXT_tessellation_shader),					s_GL_EXT_tessellation_shader					},
-	{ "GL_EXT_texture_border_clamp",					DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_border_clamp),					s_GL_EXT_texture_border_clamp					},
-	{ "GL_EXT_texture_buffer",							DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_buffer),						s_GL_EXT_texture_buffer							},
-	{ "GL_EXT_texture_filter_minmax",					DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_filter_minmax),					s_GL_EXT_texture_filter_minmax					},
-	{ "GL_EXT_texture_view",							DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_view),							s_GL_EXT_texture_view							},
-	{ "GL_INTEL_framebuffer_CMAA",						DE_LENGTH_OF_ARRAY(s_GL_INTEL_framebuffer_CMAA),					s_GL_INTEL_framebuffer_CMAA						},
-	{ "GL_INTEL_performance_query",						DE_LENGTH_OF_ARRAY(s_GL_INTEL_performance_query),					s_GL_INTEL_performance_query					},
-	{ "GL_KHR_blend_equation_advanced",					DE_LENGTH_OF_ARRAY(s_GL_KHR_blend_equation_advanced),				s_GL_KHR_blend_equation_advanced				},
-	{ "GL_KHR_debug",									DE_LENGTH_OF_ARRAY(s_GL_KHR_debug),									s_GL_KHR_debug									},
-	{ "GL_KHR_robustness",								DE_LENGTH_OF_ARRAY(s_GL_KHR_robustness),							s_GL_KHR_robustness								},
-	{ "GL_NV_bindless_texture",							DE_LENGTH_OF_ARRAY(s_GL_NV_bindless_texture),						s_GL_NV_bindless_texture						},
-	{ "GL_NV_blend_equation_advanced",					DE_LENGTH_OF_ARRAY(s_GL_NV_blend_equation_advanced),				s_GL_NV_blend_equation_advanced					},
-	{ "GL_NV_conditional_render",						DE_LENGTH_OF_ARRAY(s_GL_NV_conditional_render),						s_GL_NV_conditional_render						},
-	{ "GL_NV_conservative_raster",						DE_LENGTH_OF_ARRAY(s_GL_NV_conservative_raster),					s_GL_NV_conservative_raster						},
-	{ "GL_NV_copy_buffer",								DE_LENGTH_OF_ARRAY(s_GL_NV_copy_buffer),							s_GL_NV_copy_buffer								},
-	{ "GL_NV_coverage_sample",							DE_LENGTH_OF_ARRAY(s_GL_NV_coverage_sample),						s_GL_NV_coverage_sample							},
-	{ "GL_NV_draw_buffers",								DE_LENGTH_OF_ARRAY(s_GL_NV_draw_buffers),							s_GL_NV_draw_buffers							},
-	{ "GL_NV_draw_instanced",							DE_LENGTH_OF_ARRAY(s_GL_NV_draw_instanced),							s_GL_NV_draw_instanced							},
-	{ "GL_NV_fragment_coverage_to_color",				DE_LENGTH_OF_ARRAY(s_GL_NV_fragment_coverage_to_color),				s_GL_NV_fragment_coverage_to_color				},
-	{ "GL_NV_framebuffer_blit",							DE_LENGTH_OF_ARRAY(s_GL_NV_framebuffer_blit),						s_GL_NV_framebuffer_blit						},
-	{ "GL_NV_framebuffer_mixed_samples",				DE_LENGTH_OF_ARRAY(s_GL_NV_framebuffer_mixed_samples),				s_GL_NV_framebuffer_mixed_samples				},
-	{ "GL_NV_framebuffer_multisample",					DE_LENGTH_OF_ARRAY(s_GL_NV_framebuffer_multisample),				s_GL_NV_framebuffer_multisample					},
-	{ "GL_NV_instanced_arrays",							DE_LENGTH_OF_ARRAY(s_GL_NV_instanced_arrays),						s_GL_NV_instanced_arrays						},
-	{ "GL_NV_internalformat_sample_query",				DE_LENGTH_OF_ARRAY(s_GL_NV_internalformat_sample_query),			s_GL_NV_internalformat_sample_query				},
-	{ "GL_NV_non_square_matrices",						DE_LENGTH_OF_ARRAY(s_GL_NV_non_square_matrices),					s_GL_NV_non_square_matrices						},
-	{ "GL_NV_path_rendering",							DE_LENGTH_OF_ARRAY(s_GL_NV_path_rendering),							s_GL_NV_path_rendering							},
-	{ "GL_NV_polygon_mode",								DE_LENGTH_OF_ARRAY(s_GL_NV_polygon_mode),							s_GL_NV_polygon_mode							},
-	{ "GL_NV_read_buffer",								DE_LENGTH_OF_ARRAY(s_GL_NV_read_buffer),							s_GL_NV_read_buffer								},
-	{ "GL_NV_sample_locations",							DE_LENGTH_OF_ARRAY(s_GL_NV_sample_locations),						s_GL_NV_sample_locations						},
-	{ "GL_NV_viewport_array",							DE_LENGTH_OF_ARRAY(s_GL_NV_viewport_array),							s_GL_NV_viewport_array							},
-	{ "GL_OES_copy_image",								DE_LENGTH_OF_ARRAY(s_GL_OES_copy_image),							s_GL_OES_copy_image								},
-	{ "GL_OES_draw_buffers_indexed",					DE_LENGTH_OF_ARRAY(s_GL_OES_draw_buffers_indexed),					s_GL_OES_draw_buffers_indexed					},
-	{ "GL_OES_draw_elements_base_vertex",				DE_LENGTH_OF_ARRAY(s_GL_OES_draw_elements_base_vertex),				s_GL_OES_draw_elements_base_vertex				},
-	{ "GL_OES_geometry_shader",							DE_LENGTH_OF_ARRAY(s_GL_OES_geometry_shader),						s_GL_OES_geometry_shader						},
-	{ "GL_OES_get_program_binary",						DE_LENGTH_OF_ARRAY(s_GL_OES_get_program_binary),					s_GL_OES_get_program_binary						},
-	{ "GL_OES_primitive_bounding_box",					DE_LENGTH_OF_ARRAY(s_GL_OES_primitive_bounding_box),				s_GL_OES_primitive_bounding_box					},
-	{ "GL_OES_sample_shading",							DE_LENGTH_OF_ARRAY(s_GL_OES_sample_shading),						s_GL_OES_sample_shading							},
-	{ "GL_OES_tessellation_shader",						DE_LENGTH_OF_ARRAY(s_GL_OES_tessellation_shader),					s_GL_OES_tessellation_shader					},
-	{ "GL_OES_texture_3D",								DE_LENGTH_OF_ARRAY(s_GL_OES_texture_3D),							s_GL_OES_texture_3D								},
-	{ "GL_OES_texture_border_clamp",					DE_LENGTH_OF_ARRAY(s_GL_OES_texture_border_clamp),					s_GL_OES_texture_border_clamp					},
-	{ "GL_OES_texture_buffer",							DE_LENGTH_OF_ARRAY(s_GL_OES_texture_buffer),						s_GL_OES_texture_buffer							},
-	{ "GL_OES_texture_storage_multisample_2d_array",	DE_LENGTH_OF_ARRAY(s_GL_OES_texture_storage_multisample_2d_array),	s_GL_OES_texture_storage_multisample_2d_array	},
-	{ "GL_OES_texture_view",							DE_LENGTH_OF_ARRAY(s_GL_OES_texture_view),							s_GL_OES_texture_view							},
-	{ "GL_OVR_multiview",								DE_LENGTH_OF_ARRAY(s_GL_OVR_multiview),								s_GL_OVR_multiview								},
-	{ "GL_QCOM_alpha_test",								DE_LENGTH_OF_ARRAY(s_GL_QCOM_alpha_test),							s_GL_QCOM_alpha_test							},
+	{ "EGL_ANDROID_blob_cache",								DE_LENGTH_OF_ARRAY(s_EGL_ANDROID_blob_cache),							s_EGL_ANDROID_blob_cache							},
+	{ "EGL_ANDROID_create_native_client_buffer",			DE_LENGTH_OF_ARRAY(s_EGL_ANDROID_create_native_client_buffer),			s_EGL_ANDROID_create_native_client_buffer			},
+	{ "EGL_ANDROID_native_fence_sync",						DE_LENGTH_OF_ARRAY(s_EGL_ANDROID_native_fence_sync),					s_EGL_ANDROID_native_fence_sync						},
+	{ "EGL_ANDROID_presentation_time",						DE_LENGTH_OF_ARRAY(s_EGL_ANDROID_presentation_time),					s_EGL_ANDROID_presentation_time						},
+	{ "EGL_ANGLE_query_surface_pointer",					DE_LENGTH_OF_ARRAY(s_EGL_ANGLE_query_surface_pointer),					s_EGL_ANGLE_query_surface_pointer					},
+	{ "EGL_EXT_device_base",								DE_LENGTH_OF_ARRAY(s_EGL_EXT_device_base),								s_EGL_EXT_device_base								},
+	{ "EGL_EXT_device_enumeration",							DE_LENGTH_OF_ARRAY(s_EGL_EXT_device_enumeration),						s_EGL_EXT_device_enumeration						},
+	{ "EGL_EXT_device_query",								DE_LENGTH_OF_ARRAY(s_EGL_EXT_device_query),								s_EGL_EXT_device_query								},
+	{ "EGL_EXT_image_dma_buf_import_modifiers",				DE_LENGTH_OF_ARRAY(s_EGL_EXT_image_dma_buf_import_modifiers),			s_EGL_EXT_image_dma_buf_import_modifiers			},
+	{ "EGL_EXT_output_base",								DE_LENGTH_OF_ARRAY(s_EGL_EXT_output_base),								s_EGL_EXT_output_base								},
+	{ "EGL_EXT_platform_base",								DE_LENGTH_OF_ARRAY(s_EGL_EXT_platform_base),							s_EGL_EXT_platform_base								},
+	{ "EGL_EXT_stream_consumer_egloutput",					DE_LENGTH_OF_ARRAY(s_EGL_EXT_stream_consumer_egloutput),				s_EGL_EXT_stream_consumer_egloutput					},
+	{ "EGL_EXT_swap_buffers_with_damage",					DE_LENGTH_OF_ARRAY(s_EGL_EXT_swap_buffers_with_damage),					s_EGL_EXT_swap_buffers_with_damage					},
+	{ "EGL_HI_clientpixmap",								DE_LENGTH_OF_ARRAY(s_EGL_HI_clientpixmap),								s_EGL_HI_clientpixmap								},
+	{ "EGL_KHR_cl_event2",									DE_LENGTH_OF_ARRAY(s_EGL_KHR_cl_event2),								s_EGL_KHR_cl_event2									},
+	{ "EGL_KHR_debug",										DE_LENGTH_OF_ARRAY(s_EGL_KHR_debug),									s_EGL_KHR_debug										},
+	{ "EGL_KHR_fence_sync",									DE_LENGTH_OF_ARRAY(s_EGL_KHR_fence_sync),								s_EGL_KHR_fence_sync								},
+	{ "EGL_KHR_image",										DE_LENGTH_OF_ARRAY(s_EGL_KHR_image),									s_EGL_KHR_image										},
+	{ "EGL_KHR_image_base",									DE_LENGTH_OF_ARRAY(s_EGL_KHR_image_base),								s_EGL_KHR_image_base								},
+	{ "EGL_KHR_lock_surface",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_lock_surface),								s_EGL_KHR_lock_surface								},
+	{ "EGL_KHR_lock_surface3",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_lock_surface3),							s_EGL_KHR_lock_surface3								},
+	{ "EGL_KHR_partial_update",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_partial_update),							s_EGL_KHR_partial_update							},
+	{ "EGL_KHR_reusable_sync",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_reusable_sync),							s_EGL_KHR_reusable_sync								},
+	{ "EGL_KHR_stream",										DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream),									s_EGL_KHR_stream									},
+	{ "EGL_KHR_stream_attrib",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_attrib),							s_EGL_KHR_stream_attrib								},
+	{ "EGL_KHR_stream_consumer_gltexture",					DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_consumer_gltexture),				s_EGL_KHR_stream_consumer_gltexture					},
+	{ "EGL_KHR_stream_cross_process_fd",					DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_cross_process_fd),					s_EGL_KHR_stream_cross_process_fd					},
+	{ "EGL_KHR_stream_fifo",								DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_fifo),								s_EGL_KHR_stream_fifo								},
+	{ "EGL_KHR_stream_producer_eglsurface",					DE_LENGTH_OF_ARRAY(s_EGL_KHR_stream_producer_eglsurface),				s_EGL_KHR_stream_producer_eglsurface				},
+	{ "EGL_KHR_swap_buffers_with_damage",					DE_LENGTH_OF_ARRAY(s_EGL_KHR_swap_buffers_with_damage),					s_EGL_KHR_swap_buffers_with_damage					},
+	{ "EGL_KHR_wait_sync",									DE_LENGTH_OF_ARRAY(s_EGL_KHR_wait_sync),								s_EGL_KHR_wait_sync									},
+	{ "EGL_MESA_drm_image",									DE_LENGTH_OF_ARRAY(s_EGL_MESA_drm_image),								s_EGL_MESA_drm_image								},
+	{ "EGL_MESA_image_dma_buf_export",						DE_LENGTH_OF_ARRAY(s_EGL_MESA_image_dma_buf_export),					s_EGL_MESA_image_dma_buf_export						},
+	{ "EGL_NOK_swap_region",								DE_LENGTH_OF_ARRAY(s_EGL_NOK_swap_region),								s_EGL_NOK_swap_region								},
+	{ "EGL_NOK_swap_region2",								DE_LENGTH_OF_ARRAY(s_EGL_NOK_swap_region2),								s_EGL_NOK_swap_region2								},
+	{ "EGL_NV_native_query",								DE_LENGTH_OF_ARRAY(s_EGL_NV_native_query),								s_EGL_NV_native_query								},
+	{ "EGL_NV_post_sub_buffer",								DE_LENGTH_OF_ARRAY(s_EGL_NV_post_sub_buffer),							s_EGL_NV_post_sub_buffer							},
+	{ "EGL_NV_stream_consumer_gltexture_yuv",				DE_LENGTH_OF_ARRAY(s_EGL_NV_stream_consumer_gltexture_yuv),				s_EGL_NV_stream_consumer_gltexture_yuv				},
+	{ "EGL_NV_stream_metadata",								DE_LENGTH_OF_ARRAY(s_EGL_NV_stream_metadata),							s_EGL_NV_stream_metadata							},
+	{ "EGL_NV_stream_reset",								DE_LENGTH_OF_ARRAY(s_EGL_NV_stream_reset),								s_EGL_NV_stream_reset								},
+	{ "EGL_NV_stream_sync",									DE_LENGTH_OF_ARRAY(s_EGL_NV_stream_sync),								s_EGL_NV_stream_sync								},
+	{ "EGL_NV_sync",										DE_LENGTH_OF_ARRAY(s_EGL_NV_sync),										s_EGL_NV_sync										},
+	{ "EGL_NV_system_time",									DE_LENGTH_OF_ARRAY(s_EGL_NV_system_time),								s_EGL_NV_system_time								},
+	{ "GL_APPLE_copy_texture_levels",						DE_LENGTH_OF_ARRAY(s_GL_APPLE_copy_texture_levels),						s_GL_APPLE_copy_texture_levels						},
+	{ "GL_APPLE_framebuffer_multisample",					DE_LENGTH_OF_ARRAY(s_GL_APPLE_framebuffer_multisample),					s_GL_APPLE_framebuffer_multisample					},
+	{ "GL_APPLE_sync",										DE_LENGTH_OF_ARRAY(s_GL_APPLE_sync),									s_GL_APPLE_sync										},
+	{ "GL_EXT_discard_framebuffer",							DE_LENGTH_OF_ARRAY(s_GL_EXT_discard_framebuffer),						s_GL_EXT_discard_framebuffer						},
+	{ "GL_EXT_map_buffer_range",							DE_LENGTH_OF_ARRAY(s_GL_EXT_map_buffer_range),							s_GL_EXT_map_buffer_range							},
+	{ "GL_EXT_multi_draw_arrays",							DE_LENGTH_OF_ARRAY(s_GL_EXT_multi_draw_arrays),							s_GL_EXT_multi_draw_arrays							},
+	{ "GL_EXT_multisampled_render_to_texture",				DE_LENGTH_OF_ARRAY(s_GL_EXT_multisampled_render_to_texture),			s_GL_EXT_multisampled_render_to_texture				},
+	{ "GL_EXT_robustness",									DE_LENGTH_OF_ARRAY(s_GL_EXT_robustness),								s_GL_EXT_robustness									},
+	{ "GL_EXT_texture_storage",								DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_storage),							s_GL_EXT_texture_storage							},
+	{ "GL_IMG_multisampled_render_to_texture",				DE_LENGTH_OF_ARRAY(s_GL_IMG_multisampled_render_to_texture),			s_GL_IMG_multisampled_render_to_texture				},
+	{ "GL_IMG_user_clip_plane",								DE_LENGTH_OF_ARRAY(s_GL_IMG_user_clip_plane),							s_GL_IMG_user_clip_plane							},
+	{ "GL_NV_fence",										DE_LENGTH_OF_ARRAY(s_GL_NV_fence),										s_GL_NV_fence										},
+	{ "GL_OES_EGL_image",									DE_LENGTH_OF_ARRAY(s_GL_OES_EGL_image),									s_GL_OES_EGL_image									},
+	{ "GL_OES_blend_equation_separate",						DE_LENGTH_OF_ARRAY(s_GL_OES_blend_equation_separate),					s_GL_OES_blend_equation_separate					},
+	{ "GL_OES_blend_func_separate",							DE_LENGTH_OF_ARRAY(s_GL_OES_blend_func_separate),						s_GL_OES_blend_func_separate						},
+	{ "GL_OES_blend_subtract",								DE_LENGTH_OF_ARRAY(s_GL_OES_blend_subtract),							s_GL_OES_blend_subtract								},
+	{ "GL_OES_draw_texture",								DE_LENGTH_OF_ARRAY(s_GL_OES_draw_texture),								s_GL_OES_draw_texture								},
+	{ "GL_OES_fixed_point",									DE_LENGTH_OF_ARRAY(s_GL_OES_fixed_point),								s_GL_OES_fixed_point								},
+	{ "GL_OES_framebuffer_object",							DE_LENGTH_OF_ARRAY(s_GL_OES_framebuffer_object),						s_GL_OES_framebuffer_object							},
+	{ "GL_OES_mapbuffer",									DE_LENGTH_OF_ARRAY(s_GL_OES_mapbuffer),									s_GL_OES_mapbuffer									},
+	{ "GL_OES_matrix_palette",								DE_LENGTH_OF_ARRAY(s_GL_OES_matrix_palette),							s_GL_OES_matrix_palette								},
+	{ "GL_OES_point_size_array",							DE_LENGTH_OF_ARRAY(s_GL_OES_point_size_array),							s_GL_OES_point_size_array							},
+	{ "GL_OES_query_matrix",								DE_LENGTH_OF_ARRAY(s_GL_OES_query_matrix),								s_GL_OES_query_matrix								},
+	{ "GL_OES_single_precision",							DE_LENGTH_OF_ARRAY(s_GL_OES_single_precision),							s_GL_OES_single_precision							},
+	{ "GL_OES_texture_cube_map",							DE_LENGTH_OF_ARRAY(s_GL_OES_texture_cube_map),							s_GL_OES_texture_cube_map							},
+	{ "GL_OES_vertex_array_object",							DE_LENGTH_OF_ARRAY(s_GL_OES_vertex_array_object),						s_GL_OES_vertex_array_object						},
+	{ "GL_QCOM_driver_control",								DE_LENGTH_OF_ARRAY(s_GL_QCOM_driver_control),							s_GL_QCOM_driver_control							},
+	{ "GL_QCOM_extended_get",								DE_LENGTH_OF_ARRAY(s_GL_QCOM_extended_get),								s_GL_QCOM_extended_get								},
+	{ "GL_QCOM_extended_get2",								DE_LENGTH_OF_ARRAY(s_GL_QCOM_extended_get2),							s_GL_QCOM_extended_get2								},
+	{ "GL_QCOM_tiled_rendering",							DE_LENGTH_OF_ARRAY(s_GL_QCOM_tiled_rendering),							s_GL_QCOM_tiled_rendering							},
+	{ "GL_AMD_performance_monitor",							DE_LENGTH_OF_ARRAY(s_GL_AMD_performance_monitor),						s_GL_AMD_performance_monitor						},
+	{ "GL_ANGLE_framebuffer_blit",							DE_LENGTH_OF_ARRAY(s_GL_ANGLE_framebuffer_blit),						s_GL_ANGLE_framebuffer_blit							},
+	{ "GL_ANGLE_framebuffer_multisample",					DE_LENGTH_OF_ARRAY(s_GL_ANGLE_framebuffer_multisample),					s_GL_ANGLE_framebuffer_multisample					},
+	{ "GL_ANGLE_instanced_arrays",							DE_LENGTH_OF_ARRAY(s_GL_ANGLE_instanced_arrays),						s_GL_ANGLE_instanced_arrays							},
+	{ "GL_ANGLE_translated_shader_source",					DE_LENGTH_OF_ARRAY(s_GL_ANGLE_translated_shader_source),				s_GL_ANGLE_translated_shader_source					},
+	{ "GL_EXT_base_instance",								DE_LENGTH_OF_ARRAY(s_GL_EXT_base_instance),								s_GL_EXT_base_instance								},
+	{ "GL_EXT_blend_func_extended",							DE_LENGTH_OF_ARRAY(s_GL_EXT_blend_func_extended),						s_GL_EXT_blend_func_extended						},
+	{ "GL_EXT_buffer_storage",								DE_LENGTH_OF_ARRAY(s_GL_EXT_buffer_storage),							s_GL_EXT_buffer_storage								},
+	{ "GL_EXT_clear_texture",								DE_LENGTH_OF_ARRAY(s_GL_EXT_clear_texture),								s_GL_EXT_clear_texture								},
+	{ "GL_EXT_copy_image",									DE_LENGTH_OF_ARRAY(s_GL_EXT_copy_image),								s_GL_EXT_copy_image									},
+	{ "GL_EXT_debug_label",									DE_LENGTH_OF_ARRAY(s_GL_EXT_debug_label),								s_GL_EXT_debug_label								},
+	{ "GL_EXT_debug_marker",								DE_LENGTH_OF_ARRAY(s_GL_EXT_debug_marker),								s_GL_EXT_debug_marker								},
+	{ "GL_EXT_disjoint_timer_query",						DE_LENGTH_OF_ARRAY(s_GL_EXT_disjoint_timer_query),						s_GL_EXT_disjoint_timer_query						},
+	{ "GL_EXT_draw_buffers",								DE_LENGTH_OF_ARRAY(s_GL_EXT_draw_buffers),								s_GL_EXT_draw_buffers								},
+	{ "GL_EXT_draw_buffers_indexed",						DE_LENGTH_OF_ARRAY(s_GL_EXT_draw_buffers_indexed),						s_GL_EXT_draw_buffers_indexed						},
+	{ "GL_EXT_draw_elements_base_vertex",					DE_LENGTH_OF_ARRAY(s_GL_EXT_draw_elements_base_vertex),					s_GL_EXT_draw_elements_base_vertex					},
+	{ "GL_EXT_draw_instanced",								DE_LENGTH_OF_ARRAY(s_GL_EXT_draw_instanced),							s_GL_EXT_draw_instanced								},
+	{ "GL_EXT_draw_transform_feedback",						DE_LENGTH_OF_ARRAY(s_GL_EXT_draw_transform_feedback),					s_GL_EXT_draw_transform_feedback					},
+	{ "GL_EXT_geometry_shader",								DE_LENGTH_OF_ARRAY(s_GL_EXT_geometry_shader),							s_GL_EXT_geometry_shader							},
+	{ "GL_EXT_instanced_arrays",							DE_LENGTH_OF_ARRAY(s_GL_EXT_instanced_arrays),							s_GL_EXT_instanced_arrays							},
+	{ "GL_EXT_multi_draw_indirect",							DE_LENGTH_OF_ARRAY(s_GL_EXT_multi_draw_indirect),						s_GL_EXT_multi_draw_indirect						},
+	{ "GL_EXT_multiview_draw_buffers",						DE_LENGTH_OF_ARRAY(s_GL_EXT_multiview_draw_buffers),					s_GL_EXT_multiview_draw_buffers						},
+	{ "GL_EXT_occlusion_query_boolean",						DE_LENGTH_OF_ARRAY(s_GL_EXT_occlusion_query_boolean),					s_GL_EXT_occlusion_query_boolean					},
+	{ "GL_EXT_polygon_offset_clamp",						DE_LENGTH_OF_ARRAY(s_GL_EXT_polygon_offset_clamp),						s_GL_EXT_polygon_offset_clamp						},
+	{ "GL_EXT_primitive_bounding_box",						DE_LENGTH_OF_ARRAY(s_GL_EXT_primitive_bounding_box),					s_GL_EXT_primitive_bounding_box						},
+	{ "GL_EXT_raster_multisample",							DE_LENGTH_OF_ARRAY(s_GL_EXT_raster_multisample),						s_GL_EXT_raster_multisample							},
+	{ "GL_EXT_separate_shader_objects",						DE_LENGTH_OF_ARRAY(s_GL_EXT_separate_shader_objects),					s_GL_EXT_separate_shader_objects					},
+	{ "GL_EXT_shader_pixel_local_storage2",					DE_LENGTH_OF_ARRAY(s_GL_EXT_shader_pixel_local_storage2),				s_GL_EXT_shader_pixel_local_storage2				},
+	{ "GL_EXT_sparse_texture",								DE_LENGTH_OF_ARRAY(s_GL_EXT_sparse_texture),							s_GL_EXT_sparse_texture								},
+	{ "GL_EXT_tessellation_shader",							DE_LENGTH_OF_ARRAY(s_GL_EXT_tessellation_shader),						s_GL_EXT_tessellation_shader						},
+	{ "GL_EXT_texture_border_clamp",						DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_border_clamp),						s_GL_EXT_texture_border_clamp						},
+	{ "GL_EXT_texture_buffer",								DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_buffer),							s_GL_EXT_texture_buffer								},
+	{ "GL_EXT_texture_filter_minmax",						DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_filter_minmax),						s_GL_EXT_texture_filter_minmax						},
+	{ "GL_EXT_texture_view",								DE_LENGTH_OF_ARRAY(s_GL_EXT_texture_view),								s_GL_EXT_texture_view								},
+	{ "GL_EXT_window_rectangles",							DE_LENGTH_OF_ARRAY(s_GL_EXT_window_rectangles),							s_GL_EXT_window_rectangles							},
+	{ "GL_IMG_bindless_texture",							DE_LENGTH_OF_ARRAY(s_GL_IMG_bindless_texture),							s_GL_IMG_bindless_texture							},
+	{ "GL_IMG_framebuffer_downsample",						DE_LENGTH_OF_ARRAY(s_GL_IMG_framebuffer_downsample),					s_GL_IMG_framebuffer_downsample						},
+	{ "GL_INTEL_framebuffer_CMAA",							DE_LENGTH_OF_ARRAY(s_GL_INTEL_framebuffer_CMAA),						s_GL_INTEL_framebuffer_CMAA							},
+	{ "GL_INTEL_performance_query",							DE_LENGTH_OF_ARRAY(s_GL_INTEL_performance_query),						s_GL_INTEL_performance_query						},
+	{ "GL_KHR_blend_equation_advanced",						DE_LENGTH_OF_ARRAY(s_GL_KHR_blend_equation_advanced),					s_GL_KHR_blend_equation_advanced					},
+	{ "GL_KHR_debug",										DE_LENGTH_OF_ARRAY(s_GL_KHR_debug),										s_GL_KHR_debug										},
+	{ "GL_KHR_robustness",									DE_LENGTH_OF_ARRAY(s_GL_KHR_robustness),								s_GL_KHR_robustness									},
+	{ "GL_NV_bindless_texture",								DE_LENGTH_OF_ARRAY(s_GL_NV_bindless_texture),							s_GL_NV_bindless_texture							},
+	{ "GL_NV_blend_equation_advanced",						DE_LENGTH_OF_ARRAY(s_GL_NV_blend_equation_advanced),					s_GL_NV_blend_equation_advanced						},
+	{ "GL_NV_conditional_render",							DE_LENGTH_OF_ARRAY(s_GL_NV_conditional_render),							s_GL_NV_conditional_render							},
+	{ "GL_NV_conservative_raster",							DE_LENGTH_OF_ARRAY(s_GL_NV_conservative_raster),						s_GL_NV_conservative_raster							},
+	{ "GL_NV_conservative_raster_pre_snap_triangles",		DE_LENGTH_OF_ARRAY(s_GL_NV_conservative_raster_pre_snap_triangles),		s_GL_NV_conservative_raster_pre_snap_triangles		},
+	{ "GL_NV_copy_buffer",									DE_LENGTH_OF_ARRAY(s_GL_NV_copy_buffer),								s_GL_NV_copy_buffer									},
+	{ "GL_NV_coverage_sample",								DE_LENGTH_OF_ARRAY(s_GL_NV_coverage_sample),							s_GL_NV_coverage_sample								},
+	{ "GL_NV_draw_buffers",									DE_LENGTH_OF_ARRAY(s_GL_NV_draw_buffers),								s_GL_NV_draw_buffers								},
+	{ "GL_NV_draw_instanced",								DE_LENGTH_OF_ARRAY(s_GL_NV_draw_instanced),								s_GL_NV_draw_instanced								},
+	{ "GL_NV_fragment_coverage_to_color",					DE_LENGTH_OF_ARRAY(s_GL_NV_fragment_coverage_to_color),					s_GL_NV_fragment_coverage_to_color					},
+	{ "GL_NV_framebuffer_blit",								DE_LENGTH_OF_ARRAY(s_GL_NV_framebuffer_blit),							s_GL_NV_framebuffer_blit							},
+	{ "GL_NV_framebuffer_mixed_samples",					DE_LENGTH_OF_ARRAY(s_GL_NV_framebuffer_mixed_samples),					s_GL_NV_framebuffer_mixed_samples					},
+	{ "GL_NV_framebuffer_multisample",						DE_LENGTH_OF_ARRAY(s_GL_NV_framebuffer_multisample),					s_GL_NV_framebuffer_multisample						},
+	{ "GL_NV_gpu_shader5",									DE_LENGTH_OF_ARRAY(s_GL_NV_gpu_shader5),								s_GL_NV_gpu_shader5									},
+	{ "GL_NV_instanced_arrays",								DE_LENGTH_OF_ARRAY(s_GL_NV_instanced_arrays),							s_GL_NV_instanced_arrays							},
+	{ "GL_NV_internalformat_sample_query",					DE_LENGTH_OF_ARRAY(s_GL_NV_internalformat_sample_query),				s_GL_NV_internalformat_sample_query					},
+	{ "GL_NV_non_square_matrices",							DE_LENGTH_OF_ARRAY(s_GL_NV_non_square_matrices),						s_GL_NV_non_square_matrices							},
+	{ "GL_NV_path_rendering",								DE_LENGTH_OF_ARRAY(s_GL_NV_path_rendering),								s_GL_NV_path_rendering								},
+	{ "GL_NV_polygon_mode",									DE_LENGTH_OF_ARRAY(s_GL_NV_polygon_mode),								s_GL_NV_polygon_mode								},
+	{ "GL_NV_read_buffer",									DE_LENGTH_OF_ARRAY(s_GL_NV_read_buffer),								s_GL_NV_read_buffer									},
+	{ "GL_NV_sample_locations",								DE_LENGTH_OF_ARRAY(s_GL_NV_sample_locations),							s_GL_NV_sample_locations							},
+	{ "GL_NV_viewport_array",								DE_LENGTH_OF_ARRAY(s_GL_NV_viewport_array),								s_GL_NV_viewport_array								},
+	{ "GL_NV_viewport_swizzle",								DE_LENGTH_OF_ARRAY(s_GL_NV_viewport_swizzle),							s_GL_NV_viewport_swizzle							},
+	{ "GL_OES_copy_image",									DE_LENGTH_OF_ARRAY(s_GL_OES_copy_image),								s_GL_OES_copy_image									},
+	{ "GL_OES_draw_buffers_indexed",						DE_LENGTH_OF_ARRAY(s_GL_OES_draw_buffers_indexed),						s_GL_OES_draw_buffers_indexed						},
+	{ "GL_OES_draw_elements_base_vertex",					DE_LENGTH_OF_ARRAY(s_GL_OES_draw_elements_base_vertex),					s_GL_OES_draw_elements_base_vertex					},
+	{ "GL_OES_geometry_shader",								DE_LENGTH_OF_ARRAY(s_GL_OES_geometry_shader),							s_GL_OES_geometry_shader							},
+	{ "GL_OES_get_program_binary",							DE_LENGTH_OF_ARRAY(s_GL_OES_get_program_binary),						s_GL_OES_get_program_binary							},
+	{ "GL_OES_primitive_bounding_box",						DE_LENGTH_OF_ARRAY(s_GL_OES_primitive_bounding_box),					s_GL_OES_primitive_bounding_box						},
+	{ "GL_OES_sample_shading",								DE_LENGTH_OF_ARRAY(s_GL_OES_sample_shading),							s_GL_OES_sample_shading								},
+	{ "GL_OES_tessellation_shader",							DE_LENGTH_OF_ARRAY(s_GL_OES_tessellation_shader),						s_GL_OES_tessellation_shader						},
+	{ "GL_OES_texture_3D",									DE_LENGTH_OF_ARRAY(s_GL_OES_texture_3D),								s_GL_OES_texture_3D									},
+	{ "GL_OES_texture_border_clamp",						DE_LENGTH_OF_ARRAY(s_GL_OES_texture_border_clamp),						s_GL_OES_texture_border_clamp						},
+	{ "GL_OES_texture_buffer",								DE_LENGTH_OF_ARRAY(s_GL_OES_texture_buffer),							s_GL_OES_texture_buffer								},
+	{ "GL_OES_texture_storage_multisample_2d_array",		DE_LENGTH_OF_ARRAY(s_GL_OES_texture_storage_multisample_2d_array),		s_GL_OES_texture_storage_multisample_2d_array		},
+	{ "GL_OES_texture_view",								DE_LENGTH_OF_ARRAY(s_GL_OES_texture_view),								s_GL_OES_texture_view								},
+	{ "GL_OES_viewport_array",								DE_LENGTH_OF_ARRAY(s_GL_OES_viewport_array),							s_GL_OES_viewport_array								},
+	{ "GL_OVR_multiview",									DE_LENGTH_OF_ARRAY(s_GL_OVR_multiview),									s_GL_OVR_multiview									},
+	{ "GL_OVR_multiview_multisampled_render_to_texture",	DE_LENGTH_OF_ARRAY(s_GL_OVR_multiview_multisampled_render_to_texture),	s_GL_OVR_multiview_multisampled_render_to_texture	},
+	{ "GL_QCOM_alpha_test",									DE_LENGTH_OF_ARRAY(s_GL_QCOM_alpha_test),								s_GL_QCOM_alpha_test								},
+	{ "GL_QCOM_framebuffer_foveated",						DE_LENGTH_OF_ARRAY(s_GL_QCOM_framebuffer_foveated),						s_GL_QCOM_framebuffer_foveated						},
+	{ "GL_NV_draw_vulkan_image",							DE_LENGTH_OF_ARRAY(s_GL_NV_draw_vulkan_image),							s_GL_NV_draw_vulkan_image							},
 };
diff --git a/scripts/egl/common.py b/scripts/egl/common.py
index c8761ce..552d5cb 100644
--- a/scripts/egl/common.py
+++ b/scripts/egl/common.py
@@ -4,7 +4,7 @@
 # drawElements Quality Program utilities
 # --------------------------------------
 #
-# Copyright 2015 The Android Open Source Project
+# Copyright 2015-2017 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -38,8 +38,9 @@
 EGL_WRAPPER_DIR		= os.path.normpath(os.path.join(EGL_DIR, "wrapper"))
 
 EGL_SOURCE			= khr_util.registry_cache.RegistrySource(
-						"egl.xml",
-						33315,
+						"https://raw.githubusercontent.com/KhronosGroup/EGL-Registry",
+						"api/egl.xml",
+						"7fdf7d3a1ad50afa03968db889b68af211da6e27",
 						"19f3b517f0dede56a6a94b820d08149ef5e1726f58202f47d69fa27f6f483bd2")
 
 VERSION				= '1.5'
diff --git a/scripts/khr_util/registry_cache.py b/scripts/khr_util/registry_cache.py
index 47f06e0..9c553b9 100644
--- a/scripts/khr_util/registry_cache.py
+++ b/scripts/khr_util/registry_cache.py
@@ -4,7 +4,7 @@
 # drawElements Quality Program utilities
 # --------------------------------------
 #
-# Copyright 2015 The Android Open Source Project
+# Copyright 2015-2017 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -29,22 +29,23 @@
 BASE_URL = ""
 
 class RegistrySource:
-	def __init__(self, filename, revision, checksum):
+	def __init__(self, repository, filename, revision, checksum):
+		self.repository	= repository
 		self.filename	= filename
 		self.revision	= revision
 		self.checksum	= checksum
 
 	def __hash__(self):
-		return hash((self.filename, self.revision, self.checksum))
+		return hash((self.repository, self.filename, self.revision, self.checksum))
 
 	def __eq__(self, other):
-		return (self.filename, self.revision, self.checksum) == (other.filename, other.revision, other.checksum)
+		return (self.repository, self.filename, self.revision, self.checksum) == (other.repository, other.filename, other.revision, other.checksum)
 
 	def getFilename (self):
-		return self.filename
+		return os.path.basename(self.filename)
 
 	def getCacheFilename (self):
-		return "r%d-%s" % (self.revision, self.filename)
+		return "r%s-%s" % (self.revision, self.getFilename())
 
 	def getChecksum (self):
 		return self.checksum
@@ -53,7 +54,7 @@
 		return self.revision
 
 	def getSourceUrl (self):
-		return "https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/%s?r=%d" % (self.filename, self.revision)
+		return "%s/%s/%s" % (self.repository, self.revision, self.filename)
 
 def computeChecksum (data):
 	return hashlib.sha256(data).hexdigest()
diff --git a/scripts/opengl/src_util.py b/scripts/opengl/src_util.py
index 03b3051..c4ced08 100644
--- a/scripts/opengl/src_util.py
+++ b/scripts/opengl/src_util.py
@@ -4,7 +4,7 @@
 # drawElements Quality Program utilities
 # --------------------------------------
 #
-# Copyright 2015 The Android Open Source Project
+# Copyright 2015-2017 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -36,9 +36,10 @@
 OPENGL_INC_DIR		= os.path.join(OPENGL_DIR, "wrapper")
 
 GL_SOURCE			= khr_util.registry_cache.RegistrySource(
-						"gl.xml",
-						32093,
-						"3292120320cacbc27009e7507656d7be17bb25f06876814c67eeffa369281eed")
+						"https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry",
+						"xml/gl.xml",
+						"db2965fc26513b254e2f964171f79e416a05fe29",
+						"c4a4e241dc63ed3d1c4cd50451e5baef330dbb51dd3ecb278be80a5779f5b348")
 
 EXTENSIONS			= [
 	'GL_KHR_texture_compression_astc_ldr',